You are on page 1of 15

Lp tru tng

Ni dung
Lp tru tng So snh giao din v lp tru tng S dng lp tru tng

Lp tru tng
Lp tru tng l lp c khai bo l abstract. Phng thc tru tng l phng thc c khai bo

abstract v khng c thn.

V d:
public abstract class GraphicObject { // fields and methods } abstract void moveTo(double deltaX,double deltaY);

Lp tru tng
Lp tru tng khng nht thit cha phng thc tru

tng.

Nu mt lp c cha mt phng thc tru tng th lp

l lp tru tng v phi c khai bo l abstract.

public abstract class GraphicObject { // declare fields // declare non-abstract methods abstract void moveTo(double deltaX,double deltaY); abstract void draw(); }

Lp tru tng
Nu A l mt lp tru tng, B l lp con ca A v B khng

cung cp ci t c th cho mi phng thc tru tng ca A th B cng phi l lp tru tng.
Tng t nh i vi giao din, ta khng th to i

tng ca mt lp tru tng:


GraphicObject go = new GraphicObject(); SAI

Lp tru tng
V sao s dng lp tru tng?
cung cp mt ci t chung (d liu, phng thc) cho cc lp con. Cc lp con cung cp ci t ring ph hp vi chng, khng phi ci

t li nhng phn chung.

So snh giao din v lp tru tng


Ging nhau: C giao din v lp tru tng u l cc kiu tru tng.

u khng th to i tng t cc kiu giao din v lp tru

tng.

So snh giao din v lp tru tng

Khc nhau:
Giao din ch c th cha cc hng s (static, final) v cc

phng thc tru tng. Lp tru tng c th cha mi trng d liu v cc phng thc tru tng hoc khng tru tng.
Mc tru tng khc nhau: giao din tru tng hon ton;

lp tru tng thng ch tru tng mt phn.


Giao din c s dng m phng s ging nhau gia
8

cc i tng ci t n. Lp tru tng c s dng cung cp ci t chung cho mi lp con ca n.

S dng lp tru tng


Trong mt phn mm ha, ta cn v nhiu i tng ha khc

nhau.
Mi i tng i tng c trng thi (v tr, hng, mu ng k,

mu t...) v hnh vi (di chuyn, quay, thay i kch thc, v...)


GraphicObject

Line
9

Triangle

Circle

S dng lp tru tng


Mt s trng thi v hnh vi ca cc i tng ny l ging

nhau. V d:
Trng thi: v tr, mu t Hnh vi: di chuyn

Mt s trng thi v hnh vi cn c ci t khc nhau. V d:


thay i kch thc, v.

10

S dng lp tru tng


Cc hnh 2-D u c thng tin ta ca gc (x, y). Thao tc

di chuyn hnh c ci t chung.


public abstract class GraphicObject { protected int x; protected int y; void moveTo(int newX, int newY) { x = newX; y = newY; } abstract void draw(); abstract void resize(); }
11

S dng lp tru tng


Hnh trn v hnh ch nht c cch v v thay i kch

thc khc nhau.


public class Rectangle extends GraphicObject { @Override void draw() { // ... } @Override void resize() { // ... } }
12

public class Circle extends GraphicObject { @Override void draw() { // ... } @Override void resize() { // ... } }

S dng lp tru tng


C ch a hnh cho php gi cc phng thc thch hp

trn mi i tng ha.


public class GraphicObjectTester { public static void main(String[] args) { GraphicObject go; go = new Circle(); go.moveTo(5, 10); go.draw(); go = new Rectangle(); go.moveTo(20, 30); go.draw(); } }
13

S dng lp tru tng


Trong thc t, lp tru tng thng cung cp mt ci t

b phn cho mt hoc nhiu giao din.


public interface Runnable { public void run(); } public abstract class Vehicle implements Runnable{ protected String engineType; protected Color color; // constructors and non-abstract methods... abstract public void run(); }

14

S dng lp tru tng


public class Car extends Vehicle { // constructors and methods @Override public void run() { // ... } } public class Bike extends Vehicle { // constructors and methods @Override public void run() { // ... } }

15

You might also like