Bài giảng Lập trình trên Windows với Microsoft® .NET - Bài 5 - Trần Bá Nhiệm

Kế thừa trong C#

 Cho phép khai báo 1 lớp mới được dẫn xuất từ 1

lớp đã có.

 Sử dụng lại các đọan mã đã viết .

 Hổ trợ đơn thừa kế.

 Không cho phép đa thừa kế.

 Cho phép thực thi nhiều interface

pdf 20 trang phuongnguyen 10360
Bạn đang xem tài liệu "Bài giảng Lập trình trên Windows với Microsoft® .NET - Bài 5 - Trần Bá Nhiệm", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Lập trình trên Windows với Microsoft® .NET - Bài 5 - Trần Bá Nhiệm

Bài giảng Lập trình trên Windows với Microsoft® .NET - Bài 5 - Trần Bá Nhiệm
Lập trình trên Windows 
 với Microsoft® .NET
 Giảng viên: ThS. Trần Bá Nhiệm
Kế thừa trong C#
  Cho phép khai báo 1 lớp mới được dẫn xuất từ 1 
 lớp đã có.
  Sử dụng lại các đọan mã đã viết .
  Hổ trợ đơn thừa kế.
  Không cho phép đa thừa kế.
  Cho phép thực thi nhiều interface
Kế thừa trong C#
 class Software
 {
 private int m_z;
 public int m_v;
 protected int m_x;
 public Software()
 {
 m_x = 100;
 }
 public Software(int y)
 {
 m_x = y;
 }
 }
Kế thừa trong C#
 class MicrosoftSoftware : Software
 {
 public MicrosoftSoftware()
 {
 Console.WriteLine(m_x);
 }
 }
Kế thừa trong C#
 class IBMSoftware : Software
 {
 public IBMSoftware(int y) : base(y) {
 Console.WriteLine(m_x);
 }
 public IBMSoftware(string s, int f) : this(f) {
 Console.WriteLine(s);
 }
 }
Kế thừa trong C#
 static void Main(string[] args)
 { 
 MicrosoftSoftware objMS = new MicrosoftSoftware();
 IBMSoftware objIBM1 = new IBMSoftware(50);
 IBMSoftware objIBM2 = new IBMSoftware("test",75);
 Console.ReadLine();
 }
Kế thừa trong C# 
  Từ khóa sealed : Lớp không cho phép kế thừa 
 public sealed class A
 {
 }
 public class B : A 
 {
 }
  Lớp B không được phép kế thừa lớp A .
Overriding Method 
 class Animal
 {
 public Animal()
 {
 Console.WriteLine("Animal constructor");
 }
 public void Talk()
 {
 Console.WriteLine("Animal talk");
 }
 }
Overriding Method 
 class Dog : Animal
 {
 public Dog() {
 Console.WriteLine("Dog constructor");
 }
 public new void Talk()
 {
 Console.WriteLine("Dog talk");
 }
 }
Overriding Method 
 class Test
 {
 static void Main(string[] args)
 {
 Animal a1 = new Animal();
 a1.Talk();
 Dog d1 = new Dog();
 d1.Talk();
 }
 }
Tính đa hình - Polymorphism 
 class Animal
 {
 public Animal()
 {
 Console.WriteLine("Animal constructor");
 }
 public virtual void Talk()
 {
 Console.WriteLine("Animal talk");
 }
 }
Tính đa hình - Polymorphism
 class Dog : Animal
 {
 public Dog() {
 Console.WriteLine("Dog constructor");
 }
 public override void Talk()
 {
 Console.WriteLine("Dog talk");
 }
 }
Tính đa hình - Polymorphism
 class Test
 {
 static void Main(string[] args)
 {
 Animal objA = new Animal();
 Dog objD = new Dog();
 objA = objD ; 
 objA.Talk();
 }
 }
Lớp trừu tượng – Abstract Class
  Không được tạo đối tượng.
  Có thể định nghĩa các phương thức.
  Có thể mở rộng từ lớp dẫn xuất.
  Dùng để làm lớp cơ sở.
  Có thể thực thi interface
Lớp trừu tượng – Abstract Class
 abstract class Shape 
 {
 // Khai cac field
 protected float m_Height = 5;
 protected float m_Width = 10;
 //Khai bao cac method
 public abstract void CalculateArea();
 public abstract void CalculateCircumference();
 public void PrintHeight(){
 Console.WriteLine("Height = {0}",m_Height); 
 }
 public void PrintWidth() {
 Console.WriteLine("Width = {0}",m_Width); 
 }
 }
Lớp trừu tượng – Abstract Class
 class Rectangle:Shape
 {
 public Rectangle( {
 m_Height = 20;
 m_Width = 30;
 }
 public override void CalculateArea() {
 Console.WriteLine("Area : {0}",m_Height * m_Width ); 
 }
 public override void CalculateCircumference() {
 Console.WriteLine("Circumference = 
 {0}",(m_Height+m_Width)*2); 
 }
 }
Lớp trừu tượng – Abstract Class
 class Test
 {
 static void Main(string[] args)
 {
 Rectangle objRec = new Rectangle();
 objRec.CalculateArea(); 
 objRec.CalculateCircumference(); 
 }
 }
Giao diện – Interface
  Không được tạo đối tượng.
  Không thể định nghĩa các phương thức.
  Lớp thực thi interface phải thực thi tất cả các 
 phương thức của interface.
  Interface có thể được kế thừa các interface
 khác.
Giao diện – Interface
 interface ITest
 {
 void Print();
 }
 class Base:ITest
 {
 public void Print()
 {
 Console.WriteLine("Print method called");
 }
 }
Giao diện – Interface
 static void Main(string[] args)
 {
 Base obj = new Base();
 obj.Print(); 
 //Gọi phương thức Print() bằng interface ITest
 ITest ib = (ITest)obj ;
 ib.Print(); 
 //Gọi phương thức Print() bằng cách ép kiểu Interface 
 ITest về lớp Base
 Base ojB = (Base)ib;
 ojB.Print();
 }

File đính kèm:

  • pdfbai_giang_lap_trinh_tren_windows_voi_microsoft_net_bai_5_tra.pdf