Lập trình Java căn bản - Chương 3 Lớp và đối tượng
lượt xem 9
download
Một lớp là một mô hình khái niệm về một thực thể. Nó mang tính cách tổng quát chứ không mang tính cách đặc thù. Những thuộc tính và những hành động chung của một thực thể được nhóm lại để tạo nên một đơn vị duy nhất gọi là một lớp.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Lập trình Java căn bản - Chương 3 Lớp và đối tượng
- N i dung chương 3 3.1- Khaí ni m v l p và ñ i tư ng 3.2- Cú pháp t o l p 3.3- Xây d ng và kh i t o ñ i tư ng. CHƯƠNG 3 3.4- Tính th a k (Inheritance) L P VÀ Đ I TƯ NG 3.5- Tính ña hình (Polymorphism) 3.6- L p trình v i d li u nh p 3.7- M t s l p có s n c a Java. 3.8- Giao di n (Interface) 3.9- L p tr u tư ng (Abstract class) 3.10- L p n i (Inner class) 3.11- Gói ph n m m (Package) 3.12- Tóm t t và câu h i. 3.13- Bài t p 1 2 1
- 3.1- Khái ni m v l p và ñ i tư ng 3.2- Cú pháp khai báo class • Khai báo 1 class là khai báo m t m u • Đ i tư ng (Object): v t,ngư i,… c th (template) chung mô t cho 1 nhóm ñ i • Đ i tư ng = Properties + Methods tư ng cùng ñ c tính. • L p (class): Mô hình (template) mô t cho 1 • Th c th (entity): M t bi u di n cho m t nhóm ñ i tư ng Đ i tư ng là 1 hi n h u, ñ i tư ng bao g m properties và behaviors th c th (instance) c a class. Là m t bi u di n cho m t ñ i tư ng v t • M t l p có th là l p con (derived class- l p lý ho c quan ni m c a t nhiên. d n xu t, l p th a k , l p m r ng-extend) • M i ngôn ng OOP h tr khác nhau v c a 1 l p khác Quan h cha-con cách khai báo class cũng như các h tr các • Class Hierarchy- Phân c p các class:C u k thu t OOP khác nhau. trúc 1 l p cùng các l p con c a nó (tree) 3 4 2
- Cú pháp khai báo class trong Java Đ c tính truy xu t Modifier private friendly protected public class CLASSNAME extends FATHERCLASSNAME { DataType1 Property1 [=Value]; Cùng class YES YES YES YES DataType2 Property1 [=Value]; Cùng gói, NO YES YES YES CLASSNAME (DataType Arg,…) { // constructor khác class … l p con trong NO YES YES YES } cùng gói v i [Modifier] DataType MethodName( DataType Arg,…) { l p cha … Khác gói, khác NO NO NO YES } l p } public - private- protected : gi ng C++ L p con khác NO NO YES YES gói v i l p cha final : Không cho phép con m r ng( override) Không có modifier : M c ñ nh là friend, cho phép các ñ i tư ng thu c các class cùng package truy c p 5 6 3
- Ôn l i v ch th static Ôn l i v ch th static static property: D li u chung cho m i ñ i tư ng cùng l p static method: Phương th c cho phép s d ng mà không c n khai báo N m ngoài vùng nh c a ñ i tư ng (mang ý nghĩa c a 1 ñ i tư ng thu c l p. bi n toàn c c) import java.io.*; class STATIC_DEMO { class STATIC_CLASS { static int Count =0 ; static void Test() { STATIC_DEMO() { System.out.println("Hello1!"); Count++; } } } } class STATIC_CLASS2 extends STATIC_CLASS { Tham kh o static property c a 1 l p: void Test(){ (1) Tham kh o qua 1 ñ i tư ng c a l p này. System.out.println("Hello2!"); STATIC_DEMO D1= new STATIC_DEMO(); } D1.Count=100; TestVar1 = D1.Count ; L i: } (2) Tham kh o qua tên l p. Static method class STATIC_TST { TestVar2 = STATIC_DEMO.Count ; public static void main (String args[]) { can’t overridden STATIC_CLASS.Test(); 7 } 8 } 4
- import java.io.*; S al i 3.3- Xây d ng và kh i t o ñ i tư ng. class STATIC_CLASS { static void Test() { Chú ý v constructor: System.out.println("Hello1!"); • Default Constructor: N u 1 l p không hi n th c } constructor, constructor m c ñ nh c a Java s th c } thi khi ñ nh nghĩa ñ i tư ng (xóa tr ng b nh , các class STATIC_CLASS2 extends STATIC_CLASS { bit ñ u là 0 cho m i properties). static void Test(){ ClassName ObjName = new ClassName () ; System.out.println("Hello2!"); • User-defined Constructor: N u 1 l p có hi n th c } constructor, Java s th c thi constructor t t o này } mà không dùng constructor m c ñ nh n a Ph i class STATIC_TST { ñ nh nghĩa ñ i tư ng theo cú pháp c a constructor Hello1! public static void main (String args[]) {{ t t o. STATIC_CLASS.Test(); Hello2! ClassName ObjName = new ClassName (Args) ; STATIC_CLASS2.Test(); Press any key to continue… } } 9 10 5
- Thí d : void PrintPropertes() {// friend method import java.io.*; // file FruitDemo.java if (Seedness) System.out.println("Fruit is seedness."); class FRUIT { else System.out.println("Fruit is seeded."); boolean Seedness; // có h t hay không if (Seasonal) System.out.println("Fruit is seasonal."); boolean Seasonal; // có theo mùa hay không else System.out.println("Fruit is not seasonal."); int Price ; // Giá System.out.println("Price is :" + Price); public FRUIT () {// constructor 1- override default constructor } Seedness= false; Seasonal= false; Price= 0; } // end of FRUIT class } class FruitDem { public FRUIT (boolean aSeedness, boolean aSeasonal, int aPrice) { public static void main (String args[]) { Seedness= aSeedness; Seasonal= aSeasonal; Price= aPrice; System.out.println("First fruit:"); } FRUIT f1 = new FRUIT(); f1.PrintPropertes(); public void SetProperties(boolean aSeedness, System.out.println("Second fruit:"); boolean aSeasonal, int aPrice) { FRUIT f2 = new FRUIT(true, false,10000); f2.PrintPropertes(); Seedness= aSeedness; Seasonal= aSeasonal;Price= aPrice; } } 11 } 12 6
- Thí d (tt)- K t q a ch y chương trình Ch th final First fruit: • T khóa final có th ñ ng trư c 1 khai báo class, 1 khai báo method, 1 khai báo property mang ý nghĩa “Đây là Fruit is seeded. Chú ý: cái cu i cùng” Không cho l p con m r ng. • 1 final class là 1 class không th có l p con. Fruit is not seasonal. Method PrintProperties() có import java.io.*; tính ch t Friend nên class S a l i b ng cách b Price is :0 final class FINAL_CLASS1 final trong khai báo FruitDemo n m cùng file v i FINAL_CLASS1 Second fruit: { int t=6; class FRUIT (cùng gói) nên ho c xây d ng m i ñư c phép truy xu t method void Show() { System.out.println(t);} class FINAL_CLASS Fruit is seedness. này. } Fruit is not seasonal. class FINAL_CLASS extends FINAL_CLASS1 Price is :10000 { public static void main(String args[]) {} Press any key to continue... } L I: 6-Cannot inherit from final class FINAL_CLASS1 13 14 7
- Ch th final (tt) Ch th final (tt) import java.io.*; L i: Cannot override Show() M t final method là 1 method không th override l p con vì Show() là final method ñã class FINAL_CLASS1 khai báo trong l p cha import java.io.*; { int t=6; class FINAL_CLASS1 { chương trình final void Show() { System.out.println(t);} int t=6; này OK void Show() { } System.out.println(t); class FINAL_CLASS extends FINAL_CLASS1 } { int t2=8; } void Show() { System.out.println(t2);} class FINAL_CLASS extends FINAL_CLASS1 { int t2=8; public static void main(String args[]) public static void main(String args[]) { { FINAL_CLASS obj= new FINAL_CLASS(); FINAL_CLASS obj= new FINAL_CLASS(); obj.Show(); obj.Show();} } } 6 } Press any key to continue... 15 16 8
- Ch th final (tt) 3.4- Tính th a k (Inheritance) final property là 1 h ngc c b , KHÔNG th gán l i tr . import java.io.*; • Th a k : K thu t cho phép tái s d ng class FinalVar thông tin (properties+methods). { public static void main (String args[]) • L p con = L p cha + m t tí { final int t=1; L I: 5- Cannot assign a • L p con không th truy xu t thành ph n t=2; value to final variable t private c a l p cha. System.out.println(t); } • Cú pháp: } class SON extends FATHER {… } 17 18 9
- Chú ý: khi hi n th c code c a class Thí d v this và super • Tham s c a các method: ch có d ng import java.io.*; THAM TR (pass by value) vì Java v i class T_This1 { int x1, y1; ñ nh hư ng l p trình m ng, hư ng OOP, T_This1(int xx,int yy) { x1=xx; this.y1=yy;} bao gói tri t ñ Không th truy c p tr c void OutData() ti p properties c a 1 ñ i tư ng. {System.out.println("x1="+x1+","+"y1="+y1);} • T khóa this : Đ i tư ng hi n hành. khi } class T_This2 extends T_This1 G i constructor c a l p cha truy xu t member chính là d ng vi t t t c a { double x2, y2; this.member. T_This2(int xx1,int yy1,double xx2, double yy2) • T khóa super tham kh o ñ n l p cha { super(xx1,yy1); x2=xx2; this.y2=yy2;} void OutData() • Cho phép overload method –các method { super.OutData(); G i method c a l p cha cùng tên nhưng khác tham s . System.out.println("x2="+x2+","+"y2="+y2);} 19 } 20 10
- this- super (tt) Thí d v overloading methods import java.io.*; Thành ph n z c a Obj1 là 0 do default class TestThis class C1 constructor { { int x,y,z; public static void main (String args[]) void SetData(int t1, int t2) { x=t1; y=t2;}; { T_This2 t= new T_This2(4,5,6,7); void SetData(int t1, int t2,int t3) { x=t1; y=t2; z=t3;} t.OutData(); void OutData() { System.out.println(x+","+y+","+z); }; } } 3,4,0 } class OverLoad1 7,8,9 K tq a { public static void main(String args[]) { C1 Obj1= new C1(); Obj1.SetData(3,4); Obj1.OutData(); x1=4,y1=5 C1 Obj2 = new C1(); Obj2.SetData(7,8,9); Obj2.OutData(); x2=6.0,y2=7.0 } Press any key to continue... } 21 22 11
- 3.4- Tính Đa Hình (Polymorphism) Thí d v toán t instanceof- Ki m tra l p c a ñ i tư ng • Đa hình: K thu t t o nh ng s c thái khác nhau import java.io.*; // InstanceOfDemo.java class Student trên cùng 1 methods c a các l p trong phân c p { String Name; int Score1, Score2, Score3; th a k , b o ñ m th c thi ñúng code c a 1 hành vi public Student(String aName, int S1, int S2,int S3) c a 1 ñ i tư ng trong 1 phân c p. { Name= aName; Score1=S1; Score2=S2; Score3=S3;} Đa hình ch có trong 1 phân c p th a k và các String GetName() { return Name;} Hoa is a student. class c a phân c p có cùng method.K thu t ña } public class InstanceOfDemo Press any key to continue... hình cho phép 1 l p con override 1 method l p { public static void main(String args[]) cha ( cùng 1 method nhưng code trong l p cha { Student st= new Student("Hoa", 5,6,7) ; và code trong l p con khác nhau) if (st instanceof Student) • overload methods: methods cùng tên nhưng khác System.out.println(st.GetName()+" is a student."); tham s trong cùng 1 class. else System.out.println("This isn't a student."); } 23 } 24 12
- Thí d v ép ki u (type casting) Thí d v tính ña hình Đ ý tình hu ng • Nhi u khi c n ph i ép ki u khi vi t code import java.io.*; tràn s import java.io.*; // TypeCaseDemo.java class SHAPE (overflow) class TypeCastDemo { double Area() { return 0; } { public static void main(String args[]) } { byte b ; int i= 35; double d= 908.23; class CIRCLE extends SHAPE b= (byte)i ; { double x,y,r; System.out.println("i=" + i +" b=" + b); i=35 b=35 CIRCLE(double rr) { r=rr>0?rr:0;} i=205; double Area() { return Math.PI* r*r; } i=205 b=35 } System.out.println("i=" + i +" b=" + b); i= (int)d; d=908.23 i=908 class RECTANGLE extends SHAPE System.out.println("d=" + d +" i=" + i); { double a,b; d=908.23 b=-116 RECTANGLE (double aa, double bb) { a=aa>0?aa:0; b= (byte)d; b=bb>0?bb:0;} System.out.println("d=" + d +" b=" + b); double Area() { return a*b; } } } } 25 26 13
- Thí d v tính ña hình (tt) 3.6- Ch y ng d ng v i tham s class PolyTest1 Chương trình Java có th ñưa vào d li u nh p khi { public static void main (String args[]) ch y chương trình 1 công c nh p d li u. { SHAPE S[]= { new SHAPE(), new CIRCLE(5), Cú pháp: java File.class arg0 arg1 … new RECTANGLE(2,3)}; for (int i=0;ijava InputCommandLine Mat Uot Mi Press any key to continue... Mat,Uot,Mi 27 D:\Su\BaiGiang2004\Java\BtCh3> 28 14
- 3.7- M t s l p có s n c a Java. 3.7.1- L p Object Là l p cha c a m i l p trong java ( tr c • L p Object ti p/gián ti p) • L p String Đư c ñ trong gói java.lang (java.lang.Object) • Các l p gói (wrapper) Đ nh nghĩa các tr ng thái cơ b n và các phương th c cơ b n c a m i l p ph i có như: So sánh nó v i 1 ñ i tư ng khác (equals), chuy n ñ i mô t thành chu i (toString), ñ i (wait) 1 bi n ñi u ki n, nh n bi t (notify) các ñ i tư ng khác khi bi n ñi u ki n có thay ñ i, l y Class (getClass) 29 30 15
- L p Object (tt) L p Object (tt) import java.io.*; // ObjectDemo.java class Student2 { String Name; int t1,t2; Student2(String aName, int tt1, int tt2) { Name=aName; t1=tt1; t2=tt2;} } Student2@111f71 K t q a c a method toString() : Tên l p + @ + Đ a ch h 16 c a th c th 31 32 16
- class ObjectDemo 3.7.2- L p String - chu i ký t { public static void main(String args[]) Obj1 and Obj2 are the same { Integer InObj1= new Integer (1); Obj1 and Obj3 are separately • Đ nh nghĩa 1 String: Integer InObj2= new Integer (1); Student2@111f71 String Str1=“Hello”; Integer InObj3= new Integer (3); String Str2= new String(“Hi”); Student2@111f71 if (InObj1.equals(InObj2)) • N i String System.out.println("Obj1 and Obj2 are the same"); String Str3= Str1 + Str2; // Str3=“HelloHi” else System.out.println("Obj1 and Obj2 are Separately"); String Str4 = Str3 + 1; // Str4= “HelloHi1” if (InObj1.equals(InObj3)) • String pool ( h / b ng ch a chu i) System.out.println("Obj1 and Obj3 are the same"); Khi nhi u bi n String cùng mang 1 n i dung, chúng else System.out.println("Obj1 and Obj3 are separately"); cùng ch ñ n 1 ph n t trong String pool Student2 St= new Student2("Hoa", 5,6); Thí d : System.out.println(St.toString()); System.out.println(St.getClass().getName()+ "@" + String Str1 = “Hello”; I love you Str1 Integer.toHexString(St.hashCode())); String Str5= “Hello”; Hello Str5 } } Forget me not 33 34 17
- L p String (tt)- Methods 35 36 18
- Thí d v l p String import java.io.*; // StringDemo.java class StringDemo g { public static void main (String args[]) HALOGEN { String Str="Halogen"; 3 System.out.println(Str.charAt(4)); halogen System.out.println(Str.toUpperCase()); System.out.println(Str.indexOf(“oge",2)); System.out.println(Str.toLowerCase()); } } indexOf: tìm v trí xu t hi n ñ u c a 1chu i con 37 38 19
- 3.7.3-Các l p gói (wrappers) import java.io.*; // WrapperDemo.java class WrapperDemo true • LàData type bao l y các ki uclass li u cơ b n các l p Wrapper d { public static void main(String args[]) 125 { Boolean varBool = new Boolean ("true"); booleanm t o ra tínhBooleancho các ki u cơ b n nh OOP System.out.println(varBool); 809 byte Byte Integer varInt1= new Integer(125); Đ c Sum=934 System.out.println(varInt1); char Character Documentation Integer varInt2= new Integer ("809"); 1024 ñ bi t v các System.out.println(varInt2); double Double hành vi c a các int Sum= varInt1.intValue() + varInt2.intValue(); float Float wrapper class System.out.println("Sum=" + Sum); String S1= "1024"; int Integer int an_int= Integer.parseInt(S1); long Long System.out.println( an_int); } short Short } 39 40 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Thực hành lập trình nhúng căn bản Buổi 3
15 p | 352 | 106
-
Bài giảng Ngôn ngữ lập trình Java căn bản
115 p | 351 | 104
-
Bài giảng Nhập môn lập trình Java: Bài 2 - Võ Tấn Dũng
65 p | 85 | 10
-
Lập trình Java căn bản - Chương 1 Tổng quan về java
13 p | 94 | 10
-
Lập trình Java căn bản - Chương 2 Ngôn ngữ JAVA
12 p | 75 | 8
-
Lập trình Java căn bản - Giới thiệu
11 p | 110 | 8
-
Bài giảng Lập trình Java căn bản: Chương 2 - ThS. Võ Đức Cẩm Hải
24 p | 21 | 8
-
Bài giảng Lập trình Java căn bản: Chương 6.2 - ThS. Võ Đức Cẩm Hải
30 p | 19 | 8
-
Bài giảng Lập trình Java căn bản: Chương 0 - ThS. Võ Đức Cẩm Hải
22 p | 10 | 6
-
Bài giảng Lập trình Java căn bản: Chương 9 - ThS. Võ Đức Cẩm Hải
50 p | 9 | 5
-
Bài giảng Lập trình Java căn bản: Chương 8 - ThS. Võ Đức Cẩm Hải
48 p | 15 | 5
-
Bài giảng Lập trình Java căn bản: Chương 7 - ThS. Võ Đức Cẩm Hải
29 p | 12 | 5
-
Bài giảng Lập trình Java căn bản: Chương 5 - ThS. Võ Đức Cẩm Hải
56 p | 15 | 5
-
Bài giảng Lập trình Java căn bản: Chương 4 - ThS. Võ Đức Cẩm Hải
27 p | 16 | 5
-
Bài giảng Lập trình Java căn bản: Chương 3 - ThS. Võ Đức Cẩm Hải
61 p | 13 | 5
-
Bài giảng Lập trình Java căn bản: Chương 10 - ThS. Võ Đức Cẩm Hải
87 p | 9 | 5
-
Bài giảng Lập trình Java căn bản: Chương 6.1 - ThS. Võ Đức Cẩm Hải
44 p | 8 | 4
-
Bài giảng Lập trình java: Chương 2 - ThS. Hoàng Mạnh Hà
25 p | 93 | 4
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn