Bài giảng Lập trình trên Windows với Microsoft.Net - Chương 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 yennguyen 3020
Bạn đang xem tài liệu "Bài giảng Lập trình trên Windows với Microsoft.Net - Chương 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 - Chương 5 - Trần Bá Nhiệm

Bài giảng Lập trình trên Windows với Microsoft.Net - Chương 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_chuong_5.pdf