Post on 05-Apr-2018
7/31/2019 05 K tha trong java
1/30
7/31/2019 05 K tha trong java
2/30
K tha 2Nguy n Vit H
Ni dung
V
n
s
d
ng l
iS dng li bng k thaK tha trong Java
nh ngh a lp k thathm ph ng th c, thu c tnhkim sot truy c pconstructor
Lp Object
7/31/2019 05 K tha trong java
3/30
K tha 3Nguy n Vit H
Ti liu tham kh o
Thinking in Java , chapter 6Java how to program , chapter 9
7/31/2019 05 K tha trong java
4/30
K tha 4Nguy n Vit H
S dng li
Tn ti nhiu loi i tng c cc thu ctnh v hnh vi t ng t hoc lin quann nhau
Person, Student, Manager,Xut hin nhu c u s dng li cc mngu n vit
S
d
ng l
i thng qua copyS dng li thng qua quan h has_aS dng li thng qua c ch k tha
7/31/2019 05 K tha trong java
5/30
K tha 5Nguy n Vit H
S dng liCopy m ngu n
Tn cng, d nhmKh s a li do t n ti nhiu phin b n
Quan h has_aS dng lp c nh l thnh ph n ca lpmi
S dng li ci t vi giao di n miPh i vit li giao di nCha mm d o
7/31/2019 05 K tha trong java
6/30
K tha 6Nguy n Vit H
V d: has_aclass Person {
private String name; private Date bithday; public String getName() { return name; }
...}class Employee {
private Person me; private double salary; public String getName() { return me.getName(); }
...}
7/31/2019 05 K tha trong java
7/30
K tha 7Nguy n Vit H
class Manager {
private Employee me; private Employee assistant; public setAssistant(Employee e) {...}
...}...
Manager junior = new Manager(); Manager senior = new Manager();
senior.setAssistant(junior); // error
7/31/2019 05 K tha trong java
8/30
K tha 8Nguy n Vit H
K tha
Da trn quan h is_aTha h ng li cc thu c tnh v ph ngthc c
Chi tit ha cho ph h p vi mc ch s dng m i
Thm cc thu c tnh m iThm ho c hiu ch nh cc ph ng th c
7/31/2019 05 K tha trong java
9/30
K tha 9Nguy n Vit H
Thu t ng
K thaLp c s, lp chaLp dn xu t, lp con
7/31/2019 05 K tha trong java
10/30
K tha 10Nguy n Vit H
K tha trong Java[public] class DerivedClass extends BaseClass {
/* new features goes here */}
V d :
class Employee extends Person { private double salary; public boolean setSalary(double sal) {
...salary = sal;
return true;}}
7/31/2019 05 K tha trong java
11/30
K tha 11Nguy n Vit H
Employee e = new Employee();
e.setName("John");e.setSalary(3.0);
Person-name
-birthday
+setName()
+setBirthday()
Employee
-salary
+setSalary()+getDetail()
7/31/2019 05 K tha trong java
12/30
K tha 12Nguy n Vit H
private membersclass Employee extends Person {
... public String getDetail() {
String s;// s = name + "," + birthday;s = getName() + "," + getBirthday();s += "," + salary;return s;
}}
7/31/2019 05 K tha trong java
13/30
K tha 13Nguy n Vit H
Mc truy c p protected
m bo che d u thng tin, thngthng cc thu c tnh c khai bo lprivate
i tng thu c lp dn xu t phi truy c p tichng thng qua cc ph ng th c get v set.
Mc truy c p protected gi i quyt vn ny
i tng c a lp dn xu t truy c p ccc protected members ca lp c sCc i tng khc khng truy c p c
7/31/2019 05 K tha trong java
14/30
K tha 14Nguy n Vit H
public class Person { protected Date birthday; protected String name;
...}
public class Employee extends Person {...
public String getDetail() {String s;s = name + "," + birthday;s += "," + salary;return s;
}}
7/31/2019 05 K tha trong java
15/30
K tha 15Nguy n Vit H
Cc m c kim sot truy c p
YesYesYesYespublic
YesYesYesprotected
YesYespackage( default )
Yesprivate
UniverseSubclassSame packageSameclass Modifier
7/31/2019 05 K tha trong java
16/30
K tha 16Nguy n Vit H
Trong cng gi public class Person {Date birthday;String name;
...}
public class Employee extends Person {...
public String getDetail() {String s;s = name + "," + birthday;s += "," + salary;return s;
}}
7/31/2019 05 K tha trong java
17/30
K tha 17Nguy n Vit H
Khc gi package abc;
public class Person { protected Date birthday; protected String name;
...
}
import abc.Person; public class Employee extends Person {
... public String getDetail() {
String s;s = name + "," + birthday;s += "," + salary;return s;
}}
7/31/2019 05 K tha trong java
18/30
K tha 18Nguy n Vit H
nh ngh a li cc ph ng th cChng ta c th nh ngh a li cc ph ngthc ca lp c si tng c a lp dn xu t s hot ng
vi phng th c mi ph h p vi nC th ti s dng ph ng th c cng tnca lp c s bng t kha super
7/31/2019 05 K tha trong java
19/30
K tha 19Nguy n Vit H
V d package abc;
public class Person { protected Date birthday; protected String name; public String getDetail() {...}
...}
import abc; public class Employee extends Person {
... public String getDetail() {
String s;s = super.getDetail() + "," + salary;
return s;}
}
7/31/2019 05 K tha trong java
20/30
K tha 20Nguy n Vit H
nh ngh a li phng th cPh i c quy n truy c p khng cht hnphng th c c nh ngh a liPh i c kiu gi tr tr li nh nhau
7/31/2019 05 K tha trong java
21/30
K tha 21Nguy n Vit H
class Parent { public void doSomething() {} public int doSomething2() {
return 0;}
}
class Child extends Parent { protected void doSomething() {} public void doSomething2() {}
}
7/31/2019 05 K tha trong java
22/30
K tha 22Nguy n Vit H
Tha k nhiu tngPerson
-name
-birthday
+setName
+setBirthday
Employee
-salary
+setSalary
+getDetail
Manager
-rank...
Programmer
-project
...
Student
-id
...
Mi i tng utha k t lp g c Object
7/31/2019 05 K tha trong java
23/30
K tha 23Nguy n Vit H
Constructor
Lp d n xu t k tha m i thuc tnh vphng th c c a lp c sKhng k th a ph ng th c kh i t o
C hai gi i php g i constructor c a lpc s
s dng constructor m c nhgi constructor c a lp c s mt cch t ngminh
7/31/2019 05 K tha trong java
24/30
K tha 24Nguy n Vit H
class Point {
protected int x, y; public Point() {} public Point(int xx, int yy) {
x = xx;
y = yy;}
}
class Circle extends Point { protected int radius;
public Circle() {}}
Point p = new Point(10, 10);Circle c1 = new Circle();Circle c2 = new Circle(10, 10); // erorr
7/31/2019 05 K tha trong java
25/30
K tha 25Nguy n Vit H
Gi constructor c a lp c s
Vic khi to thu c tnh c a lp c s nngiao ph cho constructor c a lp c sS dng t kha super gi
constructor c a lp c sConstructor c a lp c s bt buc ph ic thc hin u tin
Nu lp c s khng c constructor m c nhth b t bu c ph i gi constructor t ng minh
7/31/2019 05 K tha trong java
26/30
K tha 26Nguy n Vit H
class Point {
protected int x, y; public Point() {} public Point(int xx, int yy) {
x = xx;
y = yy;}
}
class Circle extends Point { protected int radius; public Circle() {} public Circle(int xx, int yy, int r) {
super(xx, yy);radius = r;
}}
7/31/2019 05 K tha trong java
27/30
K tha 27Nguy n Vit H
class Point {
protected int x, y; public Point(int xx, int yy) {
x = xx;y = yy;
}}
class Circle extends Point {
protected int radius; public Circle() { super(0, 0); } public Circle(int xx, int yy, int r) {
super(xx, yy);
radius = r;}
}
7/31/2019 05 K tha trong java
28/30
K tha 28Nguy n Vit H
class Point {
protected int x, y; public Point() {} public Point(int xx, int yy) {
x = xx;
y = yy;}
}
class Circle extends Point { protected int radius; public Circle() { } public Circle(int xx, int yy, int r) {
// super(xx, yy);radius = r;
}}
7/31/2019 05 K tha trong java
29/30
K tha 29Nguy n Vit H
Th t khi toclass Point { protected int x, y; public Point() {
System.out.println("Point constructor");}
}class Circle extends Point {
protected int radius; public Circle() {
System.out.println("Circle constructor");}
}...Circle c = new Circle();
7/31/2019 05 K tha trong java
30/30
K tha 30Nguy n Vit H
T kha finalThu c tnh final
hng s , ch c gn gi tr khi to m t ln, khngthay i c gi tr
Ph ng th c final
khng cho php nh ngh a li lp d n xu tTham s final
khng thay i c gi tr ca tham chi u
Lp finalkhng nh ngh a c lp d n xu t