You are on page 1of 23

Lp trnh Web

Chng 5:

K tha a hnh

Lp trnh Web

Ni dung
c bit ha v tng qut ha.

S k tha
Thc thi k tha Gi constructor ca lp c s Gi phng thc ca lp c s iu khin truy xut

a hnh
Phng thc a hnh

T kha new v override

Lp tru tng
Lp Object
Lp trnh Web

Ni dung
Boxing v Unboxing d liu

Cc lp lng nhau.

Lp trnh Web

c bit ha v tng qut ha

Rn

Thn ln

Voi

C voi

Cy la

Cy bi

Lp trnh Web

c bit ha v tng qut ha


Sinh Vt
TNG QUT HA C BIT HA

ng Vt Th c v Rn

Thc vt Cy Bi

B st

Cy la Thn ln

Voi

C voi

Lp trnh Web

c bit ha v tng qut ha


Sinh Vt
TNG QUT HA C BIT HA

ng Vt C chn Thn ln Rn Khng chn

Thc vt Cy Bi

Cy la

Voi

C voi

Lp trnh Web

S k tha
K tha l cch chung nht v t nhin nht thc thi c bit ha.
Thc thi k tha Gi hm to ca lp c s Gi phng thc ca lp c s iu khin truy xut

Lp trnh Web

Thc thi k tha


C php thc thi k tha:

class <Lp dn xut>:<Lp c s>


Lp dn xut s k tha tt c cc thnh vin ca Lp

c s bao gm tt c cc phng thc v bin thnh vin.


Lp dn xut khng truy xut c cc thnh vin

private ca lp c s.
Lp dn xut c th nh ngha (override) phng

thc ca lp c s hay to cc phng thc mi.


Lp trnh Web

V d thc thi k tha


public class Window { public Window(int top, int left) { this.top = top; this.left = left; } // phng thc c khai bo o public virtual void DrawWindow() {
Console.WriteLine("Window: drawing window at {0},{1}",top, left);

} // bin thnh vin ca lp protected int top; protected int left; }

Lp trnh Web

public class ListBox : Window { // phng thc khi dng c tham s public ListBox(int top, int left, string contents) : base(top, left) { listBoxContents = contents; } //nh ngha phng thc DrawWindow public override void DrawWindow() { base.DrawWindow(); Console.WriteLine(" Writing string to the listbox: {0}", listBoxContents); } // bin thnh vin ca ListBox private string listBoxContents; }

Lp trnh Web

10

T kha sealed
T kha sealed : Lp khng cho php k tha

public sealed class A { } public class B : A { } Lp B khng c php k tha lp A .

Gi hm to ca lp c s
using System; using System.Collections.Generic; using System.Text; namespace Try { class Parent { public Parent() { Console.WriteLine("P1"); } public Parent(int i) { Console.WriteLine("P2"); } }
Lp trnh Web

12

Gi hm to ca lp c s
class Child : Parent { public Child() { Console.WriteLine("C1"); } public Child(int x) : base(x) { Console.WriteLine("C2"); } } }
Lp trnh Web

13

Gi hm to ca lp c s
static void Main() { Child child = new Child(); Child c = new Child(2); } } }

Lp trnh Web

14

Gi phng thc ca lp c s
C php:

base.<Tn phng thc>(<danh sch tham s>)


V d:

Lp trnh Web

15

a hnh - Polymorphism
class Animal { public Animal() { Console.WriteLine("Animal constructor"); } public virtual void Talk() { Console.WriteLine("Animal talk"); } }

a hnh Polymorphism (tip..)


class Dog : Animal { public Dog() { Console.WriteLine("Dog constructor"); } public override void Talk() { Console.WriteLine("Dog talk"); } }

a hnh Polymorphism (tip..)


class Test { static void Main(string[] args) { Animal objA = new Animal(); Dog objD = new Dog(); objA = objD ; objA.Talk(); } }

Lp tru tng Abstract Class


Khng c to i tng.

C th nh ngha cc phng thc.


C th m rng t lp dn xut. Dng lm lp c s. C th thc thi interface

Lp tru tng Abstract Class


abstract class Shape { // Khai bo 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); } }

Lp tru tng 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); } }

Lp tru tng Abstract Class


class Test { static void Main(string[] args) { Rectangle objRec = new Rectangle(); objRec.CalculateArea(); objRec.CalculateCircumference(); } }

Boxing v Unboxing
Boxing l vic gn mt i tng kiu gi tr cho mt i

tng kiu tham chiu (chuyn mt i tng t stack vo heap) Unboxing l chuyn mt i tng c boxing trong heap tr li stack.

Lp trnh Web

23

You might also like