Bài giảng Lập trình trên Windows với Microsoft® .NET - Bài 5 - Hồ Hoàn Kiếm
Lập trình trên Windows
với Microsoft® .NET
Giảng viên : Hồ Hoàn Kiế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 phuong thức Print() bằng cách ép kiểu Interface ITest
về lớp Base
Base ojB = (Base)ib;
ojB.Print();
}
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 - Hồ Hoàn Kiếm", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
- bai_giang_lap_trinh_tren_windows_voi_microsoft_net_chuong_5.ppt