Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 抽象類別與介面 (Abstract Classes and Interfaces) 鄭士康國立台灣大學 電機工程學系 / 電信工程研究所 / 資訊網路與多媒體研究所.

Similar presentations


Presentation on theme: "1 抽象類別與介面 (Abstract Classes and Interfaces) 鄭士康國立台灣大學 電機工程學系 / 電信工程研究所 / 資訊網路與多媒體研究所."— Presentation transcript:

1 1 抽象類別與介面 (Abstract Classes and Interfaces) 鄭士康國立台灣大學 電機工程學系 / 電信工程研究所 / 資訊網路與多媒體研究所

2 2 AbstractClass.Program (1/4) using System; namespace AbstractClass { /* /* * 示範抽象類別之應用 * 示範抽象類別之應用 * skj 5/7/2007 * skj 5/7/2007 */ */ class Program class Program { static void Main(string[] args) static void Main(string[] args) { double a = 5.0; double a = 5.0; Square sq = new Square(a); Square sq = new Square(a); Console.WriteLine(" 正方形 sq 之面積為 " + sq.Area()); Console.WriteLine(" 正方形 sq 之面積為 " + sq.Area());

3 3 AbstractClass.Program (2/4) Circle c = new Circle(a); Console.WriteLine(" 圓形 c 之面積為 " + c.Area()); Console.WriteLine(" 圓形 c 之面積為 " + c.Area()); Console.ReadLine(); Console.ReadLine(); } } public abstract class Shape public abstract class Shape { private string shape; private string shape; public Shape(string shape) public Shape(string shape) { this.shape = shape; this.shape = shape; Console.WriteLine(" 建立 " + shape); Console.WriteLine(" 建立 " + shape); } abstract public double Area(); abstract public double Area(); }

4 4 AbstractClass.Program (3/4) public class Square : Shape { double a; double a; public Square(double a) : base(" 正方形 ") public Square(double a) : base(" 正方形 ") { this.a = a; this.a = a; } public override double Area() public override double Area() { return a * a; return a * a; } }

5 5 AbstractClass.Program (4/4) public class Circle : Shape { double r; double r; public Circle(double r) public Circle(double r) : base(" 圓形 ") : base(" 圓形 ") { this.r = r; this.r = r; } public override double Area() public override double Area() { return Math.PI * r * r; return Math.PI * r * r; } }}

6 6 UsingInterface.Program (1/4) using System; namespace UsingInterface { /* /* * 示範介面之應用 * 示範介面之應用 * 5/7/2007 * 5/7/2007 */ */ class Program class Program { static void Main(string[] args) static void Main(string[] args) { double a = 5.0; double a = 5.0; Square sq = new Square(a); Square sq = new Square(a); Console.WriteLine(" 正方形 sq 之面積為 " + sq.Area()); Console.WriteLine(" 正方形 sq 之面積為 " + sq.Area());

7 7 UsingInterface.Program (2/4) Circle c = new Circle(a); Console.WriteLine(" 圓形 c 之面積為 " + c.Area()); Console.WriteLine(" 圓形 c 之面積為 " + c.Area()); Console.ReadLine(); Console.ReadLine(); } } interface Shape interface Shape { double Area(); double Area(); }

8 8 UsingInterface.Program (3/4) public class Square : Shape public class Square : Shape { double a; double a; public Square(double a) public Square(double a) { this.a = a; this.a = a; } public double Area() public double Area() { return a * a; return a * a; } }

9 9 UsingInterface.Program (4/4) public class Circle : Shape { double r; double r; public Circle(double r) public Circle(double r) { this.r = r; this.r = r; } public double Area() public double Area() { return Math.PI * r * r; return Math.PI * r * r; } }}

10 10 抽象類別與介面 修飾語 修飾語 欄位變數 欄位變數 建構式 建構式 函式方法覆寫與實作 函式方法覆寫與實作 多重繼承 多重繼承

11 11 MultiInterface.Program (1/3) using System; namespace MultiInterface { /* 示範多重介面之實作 /* 示範多重介面之實作 * skj 5/8/2007 * skj 5/8/2007 */ */ class Program class Program { static void Main(string[] args) static void Main(string[] args) { SeaPlane sp = new SeaPlane(); SeaPlane sp = new SeaPlane(); sp.Sail(); sp.Sail(); sp.Fly(); sp.Fly(); Console.ReadLine(); Console.ReadLine(); } }

12 12 MultiInterface.Program (2/3) interface Plane { void Fly(); void Fly(); } interface Ship interface Ship { void Sail(); void Sail(); }

13 13 MultiInterface.Program (3/3) public class SeaPlane : Plane, Ship { public SeaPlane() public SeaPlane() { Console.WriteLine(" 建立水上飛機 "); Console.WriteLine(" 建立水上飛機 "); } public void Sail() public void Sail() { Console.WriteLine(" 水上滑行 "); Console.WriteLine(" 水上滑行 "); } public void Fly() public void Fly() { Console.WriteLine(" 空中飛行 "); Console.WriteLine(" 空中飛行 "); } }}

14 14 CastMultiInterfaces.Program (1/4) using System; namespace CastMultiInterfaces { class Program class Program { static void Main(string[] args) static void Main(string[] args) { double a = 5.0; double a = 5.0; Square sq = new Square(a); Square sq = new Square(a); Rhombus rhomb = sq as Rhombus; Rhombus rhomb = sq as Rhombus; Console.WriteLine( Console.WriteLine( "sq 的面積以菱形公式計算得 "+rhomb.Area() ); "sq 的面積以菱形公式計算得 "+rhomb.Area() );

15 15 CastMultiInterfaces.Program (2/4) if( sq is Rectangle ) { Rectangle rec = (Rectangle) sq; Rectangle rec = (Rectangle) sq; Console.WriteLine( Console.WriteLine( "sq 的面積以矩形公式計算得 "+rec.Area() ); "sq 的面積以矩形公式計算得 "+rec.Area() ); } Console.ReadLine(); Console.ReadLine(); } } interface Rectangle interface Rectangle { double Area(); double Area(); }

16 16 CastMultiInterfaces.Program (3/4) interface Rhombus { double Area(); double Area(); } public class Square : Rectangle, Rhombus { private double a; private double a; private double d; private double d; public Square(double a) public Square(double a) { this.a = a; this.a = a; d = Math.Sqrt(2.0) * a; d = Math.Sqrt(2.0) * a; }

17 17 CastMultiInterfaces.Program (4/4) double Rectangle.Area() double Rectangle.Area() { return a * a; return a * a; } double Rhombus.Area() double Rhombus.Area() { return 0.5 * d * d; return 0.5 * d * d; } }}


Download ppt "1 抽象類別與介面 (Abstract Classes and Interfaces) 鄭士康國立台灣大學 電機工程學系 / 電信工程研究所 / 資訊網路與多媒體研究所."

Similar presentations


Ads by Google