Học nhanh Java cho người mới bắt đầu
- 1- Giới thiệu
- 2- Tạo mới Project
- 3- Các kiểu dữ liệu nguyên thủy (Primitive Data Types)
- 4- Biến (Variable)
- 5- Điều khiển luồng đi của chương trình (Control flow)
-
- 5.1- Câu lệnh if - else
- 5.2- Các toán tử thông thường
- 5.3- Giá trị boolean
- 5.4- Câu lệnh switch- case -default
- 5.5- Vòng lặp for
- 5.6- Vòng lặp while
- 5.7- Vòng lặp do-while
- 6- Mảng trong Java (Array)
-
- 6.1- Mảng là gì?
- 6.2- Làm việc với mảng
- 7- Class, đối tượng và cấu tử (Class, Instance, Constructor)
- 8- Trường (Field)
- 9- Phương thức (Method)
- 10- Thừa kế trong Java
- 11- Hướng dẫn tra cứu sử dụng Javadoc
- 12- Gợi ý
- 1- Giới thiệu ▴
-
Trước hết học Java cần những gì, bạn xem tại:
-
Gợi ý các bước học Java cho người mới bắt đầu tại:
-
-
Tài liệu hướng dẫn này dành cho người mới bắt đầu với Java. Cách trình bầy trong tài liệu này là giới thiệu giới thiệu thật ngắn gọn tất cả những thứ cơ bản cho người mới bắt đầu và đi đôi với thực hành nhỏ. Nếu bạn là một người mới làm quen với Java. Bạn lên đọc và thực hành trọn vẹn tài liệu này, trước khi tìm hiểu chi tiết các khái niệm ở các tài liệu khác.
- 2- Tạo mới Project ▴
-
Trước hết chúng ta tạo mới một Project, nó sẽ được sử dụng trong hướng dẫn này.
-
-
Nhập vào tên project:
-
- BasicJavaTutorial
-
-
Đây là hình ảnh Project vừa được tạo ra:
-
-
Chú ý: Để có thể gõ được các ngôn ngữ khác tiếng Anh trong Project, bạn cần chuyển mã hóa sang UTF8.
-
Nhấn phải chuột vào Project chọn Properties:
-
-
- 3- Các kiểu dữ liệu nguyên thủy (Primitive Data Types) ▴
-
Có 8 loại primitive Data trong JAVA
- Dùng cho kiểu số nguyên có 4 loại: Byte, short, int, long
- Kiểu số thực ta có: float, double
- Kiểu ký tự: char
- Kiểu logic: trả về giá trị true hoặc false (đúng hoặc sai)
-
Kiểu dữ liệu Ghi chú Số bit Giá trị nhỏ nhất Giá trị lớn nhất byte Số tự nhiên 8 bit 8 -128 (-2^7) 127 (2^7-1) short Số tự nhiên 16 bit 16 -32,768 (-2^15) 32,767 (2^15 -1) int Số tự nhiên 32 bit 32 - 2,147,483,648
(-2^31)2,147,483,647
(2^31 -1)long Số tự nhiên 64 bit 64 -9,223,372,036,854,775,808
(-2^63)9,223,372,036,854,775,807
(2^63 -1)float Số thực 32 bit 32 -3.4028235 x 10^38 3.4028235 x 10^38 double Số thực 64 bit 64 -1.7976931348623157 x 10^308 1.7976931348623157 x 10^308 boolean Kiểu logic false true char Kiểu ký tự 16 '\u0000' (0) '\uffff' (65,535). - 4- Biến (Variable) ▴
-
Nhấn phải chuột vào src chọn "New/Package":
-
-
Đặt tên package là:
-
- org.o7planning.tutorial.javabasic.variable
-
-
-
Nhập vào tên class:
-
- VariableExample1
-
-
Class VariableExample1 được tạo ra:
-
-
Sửa code của class VariableExample1:
-
- VariableExample1.java
-
12345678910111213141516171819202122232425262728293031323334353637
packageorg.o7planning.tutorial.javabasic.variable;publicclassVariableExample1 {publicstaticvoidmain(String[] args) {// Khai báo một biến, có kiểu là số tự nhiên 32 bit.intfirstNumber ;// Gán giá trị cho firstNumberfirstNumber =10;System.out.println("First Number ="+ firstNumber);// Khai báo một số thực 32 bit (float)// Số này được gán giá trị 10.2// Chữ f ở cuối giúp java hiểu đây là kiểu float.floatsecondNumber =10.2f;System.out.println("Second Number ="+ secondNumber);// Khai báo một số thực 64 bit// Số này được gán giá trị 10.2// Chữ d ở cuối giúp java hiểu đây là kiểu double. Phân biệt với kiểu float.doublethirdNumber =10.2d;System.out.println("Third Number ="+ thirdNumber);// Khai báo một kiểu ký tựcharch ='a';System.out.println("Char ch= "+ ch);}} -
Chạy class VariableExample1:
-
Nhấn phải chuột vào class VariableExample1 chọn "Run As/Java Application":
-
-
Kết quả chạy class xem trên cửa sổ Console:
-
-
Bạn cũng có thể khai báo nhiều biến cùng một lúc, ví dụ tiếp theo minh họa điều này:
-
Tạo mới class VariableExample2
-
-
- VariableExample2.java
-
12345678910111213141516171819202122232425
packageorg.o7planning.tutorial.javabasic.variable;publicclassVariableExample2 {publicstaticvoidmain(String[] args) {// Khai báo 3 số tự nhiên 64 bit (long)longfirstNumber, secondNumber, thirdNumber;// Gán giá trị cho firstNumber// Chữ L ở cuối để nói với java đây là kiểu long, phân biệt với kiểu tự nhiên int.firstNumber = 100L;// Gán giá trị cho secondNumbersecondNumber = 200L;// Gán giá trị cho thirdNumberthirdNumber = firstNumber + secondNumber;System.out.println("First Number = "+ firstNumber);System.out.println("Second Number = "+ secondNumber);System.out.println("Third Number = "+ thirdNumber);}} -
Results of running the class VariableExample2:
-
- 5- Điều khiển luồng đi của chương trình (Control flow) ▴
-
- 5.1- Câu lệnh if - else ▴
-
Cấu trúc của một câu lệnh if - else là:
-
123456789
if(Điều kiên1) {// Làm gì đó tại đây}elseif(Điều kiện2) {// Làm gì đó tại đây}elseif(Điều kiện3) {// Làm gì đó tại đây}else{// Ngược lại// Làm gì đó tại đây} -
Tạo class ElseIfExample1:
-
-
- ElseIfExample1.java
-
123456789101112131415161718192021222324252627
packageorg.o7planning.tutorial.javabasic.controlflow;publicclassElseIfExample1 {publicstaticvoidmain(String[] args) {// Khai báo một số tự nhiên (int)// Mô phỏng điểm thi của một bạnintscore =70;System.out.println("Your score ="+ score);// Nếu điểm số nhỏ hơn 50if(score <50) {System.out.println("You are not pass");}// Ngược lại nếu điểm số hơn hơn hoặc bằng 50 và nhỏ hơn 80.elseif(score >=50&& score <80) {System.out.println("You are pass");}// Trường hợp còn lại (Nghĩa là lớn hơn hoặc bằng 80)else{System.out.println("You are pass, good student!");}}} -
Kết quả chạy class ElseIfExample1:
-
-
Thay đổi giá trị của biến "score" trong ví dụ trên và chạy lại class ElseIfExample1:
-
1
intscore =20; -
- 5.2- Các toán tử thông thường ▴
-
- > Lớn hơn
- < Nhỏ hơn
- >= Lớn hơn hoặc bằng
- <= Nhỏ hơn hặc bằng
- && Và
- || hoặc
- == So sánh bằng
- != So sánh khác nhau
- ! Phủ định
-
Tạo class ElseIfExample2
-
- ElseIfExample2.java
-
12345678910111213141516171819202122232425262728293031323334353637383940414243
packageorg.o7planning.tutorial.javabasic.controlflow;publicclassElseIfExample2 {publicstaticvoidmain(String[] args) {// Khai báo một biến int mô phỏng tuổi của bạn.intage =20;// Kiểm tra tuổi nhỏ hơn hoặc bằng 17if(age <=17) {System.out.println("You are 17 or younger");}// Kiểm tra tuổi bằng 18elseif(age ==18) {System.out.println("You are 18 year old");}// Kiểm tra tuổi lớn hơn 18 và nhỏ hơn 40elseif(age >18&& age <40) {System.out.println("You are between 19 and 39");}// Trường hợp còn lại (Lớn hơn hoặc bằng 40)else{// Một câu lệnh kiểm tra nằm bên trong.// Kiểm tra tuổi khác 50.if(age !=50) {System.out.println("You are not 50 year old");}// Câu lệnh phủ định tuổi bằng 50, nghĩa là khác 50.if(!(age ==50)) {System.out.println("You are not 50 year old");}// Nếu tuổi là 60 hoặc 70if(age ==60|| age ==70) {System.out.println("You are 60 or 70 year old");}}}} -
Bạn có thể thay đổi giá trị của "age" và chạy class ElseIfExample2 và xem các kết quả
- 5.3- Giá trị boolean ▴
-
boolean là một kiểu dữ liệu, nó chỉ có 2 giá trị true hoặc false (Đúng hoặc sai).
-
Tạo class BooleanExample:
-
-
- BooleanExample.java
-
12345678910111213141516171819202122232425262728
packageorg.o7planning.tutorial.javabasic.controlflow;publicclassBooleanExample {publicstaticvoidmain(String[] args) {// Khai báo một biến kiểu booleanbooleanvalue =true;// Nếu value là trueif(value ==true) {System.out.println("It's true");}// Ngược lạielse{System.out.println("It's false");}// Với giá trị boolean bạn cũng có thể viết.if(value) {System.out.println("It's true");}// Ngược lạielse{System.out.println("It's false");}}} - 5.4- Câu lệnh switch- case -default ▴
-
Đây cũng là một loại câu lệnh rẽ nhánh gần giống với If-Else được giới thiệu ở trên
-
12345678910
switch( Biến kiểm tra ) {casevalue1:// Làm gì đó tại đây;break;casevalue2:// Làm gì đó tại đây;break;default:// Làm gì đó tại đây} -
- SwitchExample1.java
-
12345678910111213141516171819202122
packageorg.o7planning.tutorial.javabasic.controlflow;publicclassSwitchExample1 {publicstaticvoidmain(String[] args) {// Khai báo một biến age (tuổi)intage =20;// Kiểm tra giá trị của ageswitch(age) {case18:// Trường hợp tuổi bằng 18System.out.println("You are 18 year old");break;case20:// Trường hợp tuổi bằng 20System.out.println("You are 20 year old");break;default:// Các trường hợp còn lạiSystem.out.println("You are not 18 or 20 year old");}}} -
Kết quả việc chạy class SwitchExample1:
-
-
Chú ý rằng với câu lệnh case phải là một giá trị cụ thể bạn không thể làm như sau:
-
1234567
// Điều này không được phép!!case(age <18) :// case chỉ chấp nhận một giá trị cụ thể ví dụ:case18:// Làm gì đó tại đâybreak; -
Xem một ví dụ khác:
-
- SwitchExample2.java
-
123456789101112131415161718192021222324252627
packageorg.o7planning.tutorial.javabasic.controlflow;publicclassSwitchExample2 {publicstaticvoidmain(String[] args) {// Khai báo một biến age (tuổi)intage =30;// Kiểm tra giá trị của ageswitch(age) {// Trường hợp tuổi bằng 18case18:System.out.println("You are 18 year old");// Các trường hợp 20, 30, 40 tuổi.case20:case30:case40:System.out.println("You are "+ age);break;default:// Các trường hợp còn lạiSystem.out.println("Other age");}}} -
Kết quả chạy:
-
- 5.5- Vòng lặp for ▴
-
Đây là cấu trúc vòng lặp:
-
123
for( Giá trị bắt đầu ; Giá trị kết thúc; Giá trị tăng ) {// Làm gì đó tại đây.} -
Hãy xem một ví dụ minh họa:
-
-
- ForLoopExample1.java
-
1234567891011121314151617181920212223242526
packageorg.o7planning.tutorial.javabasic.loop;publicclassForLoopExample1 {publicstaticvoidmain(String[] args) {// Khai báo một biến mô tả bước thứ mấy (Vòng lặp thứ mấy)intstep =1;// Khai báo một biến value với giá trị bắt đầu là 0// Sau mỗi một vòng lặp value lại được công thêm 3 (Nghĩa là bước tăng 3)// Và vòng lặp sẽ kết thúc khi value lơn hơn hoặc bằng 10// Theo code này nghĩa là mỗi vòng lặp value sẽ tăng 3// Vòng lặp sẽ dừng lại khi (value < 10) không còn đúng nữa.for(intvalue =0; value <10; value = value +3) {System.out.println("Step ="+ step +" value = "+ value);// Tăng giá trị step lên 1, sau mỗi vòng lặpstep = step +1;}}} -
Kết quả chạy class ForLoopExample1:
-
-
Xem tiếp một ví dụ khác, tính tổng các số từ 1 tới 100:
-
- ForLoopExample2.java
-
12345678910111213141516171819202122232425262728
packageorg.o7planning.tutorial.javabasic.loop;publicclassForLoopExample2 {// Đây là một ví dụ tính tổng các số từ 1 tới 100, và in kết quả ra màn hình.publicstaticvoidmain(String[] args) {// Khai báo một biếninttotal =0;// Khai báo một biến value// Có giá trị ban đầu 1// Sau mỗi vòng lặp giá trị tăng lên 1// Chú ý: value++ tương đương với câu lệnh: value = value + 1;// value-- tương đương với câu lệnh: value = value - 1;for(intvalue =1; value <=100; value++) {// Gán giá trị total bằng giá trị cũ cộng thêm value.total = total + value;}System.out.println("Total = "+ total);}} -
Kết quả
-
- 5.6- Vòng lặp while ▴
-
Đây là cấu trúc vòng lặp while:
-
1234
// Trong khi điều kiện đúng, thì làm gì đó.while( Điều kiện ) {// Làm gì đó tại đây} -
Xem ví dụ minh họa
-
-
- WhileExample1.java
-
123456789101112131415161718
packageorg.o7planning.tutorial.javabasic.loop;publicclassWhileExampe1 {publicstaticvoidmain(String[] args) {intvalue =3;// Trong khi value vẫn nhỏ hơn 10 thì vòng lặp vẫn làm việc.while( value <10) {System.out.println("Value = "+ value);// Tăng giá trị của value lên 2 đơn vịvalue = value +2;}}} - 5.7- Vòng lặp do-while ▴
-
Đây là cấu trúc vòng lặp do-while:
-
123456
// Vòng lặp do-while làm việc ít nhất 1 vòng// và trong khi điều kiện còn đúng thì nó còn làm việc tiếpdo{// Làm gì đó tại đây}while( Điều kiện ); -
Ví dụ minh họa:
-
-
- DoWhileExample1.java
-
1234567891011121314151617181920
packageorg.o7planning.tutorial.javabasic.loop;publicclassDoWhileExample1 {publicstaticvoidmain(String[] args) {intvalue =3;// Vòng lặp do-while thực thi ít nhất 1 lần.do{System.out.println("Value = "+ value);// Tăng giá trị cho value thêm 3 đơn vịvalue = value +3;}while(value <10);}} -
Kết quả
-
- 6- Mảng trong Java (Array) ▴
-
- 6.1- Mảng là gì? ▴
-
Mảng là một danh sách các phần tử được sắp xếp liền nhau trên bộ nhớ.
-
Hãy xem một hình ảnh mảng 5 phần tử, chứa các số int.
-
- 6.2- Làm việc với mảng ▴
-
Cách khai báo một mảng trong Java.
-
1234567891011121314
// Khai báo một mảng, chưa chỉ rõ số phần tử.int[] array1;// Khởi tạo mảng với 100 phần tử// Các phần tử chưa được gán giá trị cụ thểarray1 =newint[100];// Khai báo một mảng chỉ rõ số phần tử// Các phần tử chưa được gán giá trị cụ thểdouble[] array2 =newdouble[10];// Khai báo một mảng mà các phần tử được gán giá trị cụ thể.// Mảng này có 4 phần tửlong[] array3= {10L, 23L, 30L, 11L}; -
Hãy xem một ví dụ:
-
-
-
- ArrayExample1.java
-
12345678910111213141516171819202122232425262728293031323334353637
packageorg.o7planning.tutorial.javabasic.array;publicclassArrayExample1 {publicstaticvoidmain(String[] args) {// Khai báo một mảng 5 phần tửint[] myArray=newint[5];// Chú ý phần tử đầu tiên của mảng có chỉ số là 0:// Gán giá trị cho phần tử đầu tiên (Chỉ số 0)myArray[0] =10;// Gán giá trị cho phần tử thứ hai (Chỉ số 1)myArray[1] =14;myArray[2] =36;myArray[3] =27;// Giá giá trị cho phần tử thứ 5 (Phần tử cuối cùng trong mảng)myArray[4] =18;// In ra màn hình số phần tử của mảng.System.out.println("Array Length="+ myArray.length);// In ra màn hình phần tử tại chỉ số 3 (Phần tử thứ 4 trong mảng)System.out.println("myArray[3]="+ myArray[3]);// Sử dụng vòng lặp for để in ra các phần tử trong mảng.for(intindex=0; index < myArray.length; index++) {System.out.println("Element "+ index+" = "+ myArray[index]);}}} -
Kết quả:
-
-
Một ví dụ minh họa tiếp sử dụng vòng lặp for để gán giá trị cho các phần tử:
-
- ArrayExample2.java
-
123456789101112131415161718192021
packageorg.o7planning.tutorial.javabasic.array;publicclassArrayExample2 {publicstaticvoidmain(String[] args) {// Khai báo một mảng 5 phần tửint[] myArray =newint[5];// In ra màn hình số phần tử của mảng.System.out.println("Array Length="+ myArray.length);// Sử dụng vòng lặp for gán giá trị các phẩn tử của mảng.for(intindex =0; index < myArray.length; index++) {myArray[index] =100* index * index +3;}// In ra màn hình phần tử tại chỉ số 3System.out.println("myArray[3] = "+ myArray[3]);}} -
Kết quả
-
- 7- Class, đối tượng và cấu tử (Class, Instance, Constructor) ▴
-
Bạn cần có sự phân biệt giữa 3 khái niệm:
- Class
- Cấu tử (Constructor)
- Đối tượng (Instance)
-
Khi chúng ta nói về Cây, nó là một thứ gì đó trìu tượng, nó là một lớp (class). Nhưng khi chúng ta chỉ thẳng vào một cái cây cụ thể thì lúc đó đã rõ ràng và đó là đối tượng (instance)
-
-
Hoặc khi chúng ta nói về người (Person) thì đó cũng trìu tượng, nó là một lớp. Nhưng khi chỉ thẳng vào bạn hoặc tôi thì đó là 2 đối tượng khác nhau, cùng thuộc lớp người.
-
-
- Person.java
-
1234567891011121314151617181920212223
packageorg.o7planning.tutorial.javabasic.javastructure;publicclassPerson {// Đây là một trường (Field)// Lưu trữ tên người.publicString name;// Đây là một cấu tử, còn gọi là phương thức khởi tạo (Constructor)// Dùng nó để khởi tạo đối tượng.// Cấu tử này có một tham số.// Cấu tử luôn có tên giống tên class.publicPerson(String persionName) {// Gán giá trị từ tham số vào cho trường name.this.name = persionName;}// Đây là một phương thức trả về kiểu String.publicString getName() {returnthis.name;}} -
Như trên class Person không có hàm main. Tiếp theo class TestPerson là ví dụ khởi tạo các đối tượng của Person thông qua các cấu tử.
-
- PersonTest.java
-
1234567891011121314151617181920212223242526272829
packageorg.o7planning.tutorial.javabasic.javastructure;publicclassPersonTest {publicstaticvoidmain(String[] args) {// Tạo một đối tượng từ class Person// Khởi tạo đối tượng này tử cấu tử của class Person// Cụ thể là EdisonPerson edison =newPerson("Edison");// Class Person có hàm getName()// Sử dụng đối tượng để gọi hàm getName():String name = edison.getName();System.out.println("Person 1: "+ name);// Tạo một đối tượng từ class Person.// Khởi tạo đối tượng này tử cấu tử của class Person// Cụ thể là Bill GatesPerson billGate =newPerson("Bill Gates");// Class Person có trường name (public)// Sử dụng đối tượng để tham chiếu tới nó.String name2 = billGate.name;System.out.println("Person 2: "+ name2);}} -
Kết quả chạy ví dụ:
-
- 8- Trường (Field) ▴
-
Trong phần tiếp theo này chúng ta sẽ thảo luận về một số khái niệm:
-
Trường (Field)
- Trường thông thường
- Trường tĩnh (static Field)
- Trường final (final Field)
- Trường tĩnh và final (static final Field)
-
Xem một ví dụ với trường thông thường và trường tĩnh.
-
-
- FieldSample.java
-
1234567891011121314151617
packageorg.o7planning.tutorial.javabasic.javastructure;publicclassFieldSample {// Đây là một trường tĩnh.publicstaticintMY_STATIC_FIELD =100;// Đây là một trường thông thường.publicString myValue;// Cấu tử khởi tạo đối tượng FieldSample.publicFieldSample(String myValue) {this.myValue= myValue;}} -
- FieldSampleTest.java
-
1234567891011121314151617181920212223242526272829303132333435363738394041
packageorg.o7planning.tutorial.javabasic.javastructure;publicclassFieldSampleTest {publicstaticvoidmain(String[] args) {// Tạo đối tượng thứ nhất.FieldSample obj1 =newFieldSample("Value1");System.out.println("obj1.myValue= "+ obj1.myValue);// In ra giá trị của trường static// Tham chiếu qua đối tượng.System.out.println("obj1.MY_STATIC_FIELD= "+ obj1.MY_STATIC_FIELD);// In ra giá trị của trường static.// Với các trường tĩnh, có thể truy cập tới nó thông qua class.// Tham chiếu qua class.System.out.println("FieldSample.MY_STATIC_FIELD= "+ FieldSample.MY_STATIC_FIELD);// Tạo đối tượng thứ 2:FieldSample obj2 =newFieldSample("Value2");System.out.println("obj2.myValue= "+ obj2.myValue);// In ra giá trị của trường static// Tham chiếu qua đối tượng.System.out.println("obj2.MY_STATIC_FIELD= "+ obj2.MY_STATIC_FIELD);System.out.println(" ------------- ");// Trường static là trường dùng chung cho mọi đối tượng.// Sét đặt giá trị mới cho trường static.// (Có thể thay bởi: FieldSample.MY_STATIC_FIELD = 200)obj1.MY_STATIC_FIELD =200;// Tại đây sẽ in ra giá trị 200.System.out.println("obj2.MY_STATIC_FIELD= "+ obj2.MY_STATIC_FIELD);}} -
Kết quả chạy ví dụ:
-
-
Chúng ta hãy xem một ví dụ đơn giản về một class trong Java. Class Cat, mô tả con mèo.
-
Các trường final là các trường mà không thể gán giá trị mới cho nó, nó giống như một hằng số.
-
- FinalFieldExample.java
-
123456789101112
packageorg.o7planning.tutorial.javabasic.javastructure;publicclassFinalFieldExample {// Một trường final.// Trường final không cho phép gán giá trị mới.publicfinalintmyValue =100;// Một trường tĩnh và final.// Trường final không cho phép gán giá trị mới.publicstaticfinallongMY_LONG_VALUE = 1234L;} - 9- Phương thức (Method) ▴
-
Phương thức, hay còn gọi là hàm (Method)
- Phương thức thông thường.
- Phương thức tĩnh
- Phương thức final. (Sẽ được đề cập trong phần thừa kế của class).
-
- MethodSample.java
-
1234567891011121314151617181920212223242526272829303132
packageorg.o7planning.tutorial.javabasic.javastructure;publicclassMethodSample {publicString text ="Some text";// Cấu tử mặc địnhpublicMethodSample() {}// Đây là một phương thức trả về kiểu String.// Phương thức này không có tham sốpublicString getText() {returnthis.text;}// Đây là một phương thức có 1 tham số String.// Phương thức này trả về void (Hay gọi là ko trả về gì)publicvoidsetText(String text) {// this.text tham chiếu tới trường text.// phân biệt với tham số text.this.text = text;}// Đây là một phương thức tĩnh.// Trả về kiểu int, có 3 tham số.publicstaticintsum(inta,intb,intc) {intd = a + b + c;returnd;}} -
- MethodSampleTest.java
-
123456789101112131415161718192021222324252627282930313233
packageorg.o7planning.tutorial.javabasic.javastructure;publicclassMethodSampleTest {publicstaticvoidmain(String[] args) {// Tạo đối tượng MethodSampleMethodSample obj =newMethodSample();// Gọi phương thức getText()String text = obj.getText();System.out.println("Text = "+ text);// Gọi method setText(String)obj.setText("New Text");System.out.println("Text = "+ obj.getText());// Phương thức tĩnh có thể gọi qua class.// Cách này được khuyến khích dùng. (**)intsum = MethodSample.sum(10,20,30);System.out.println("Sum 10,20,30= "+ sum);// Hoặc gọi qua đối tượng// Cách này không được khuyến khích. (**)intsum2 = obj.sum(20,30,40);System.out.println("Sum 20,30,40= "+ sum2);}} -
- 10- Thừa kế trong Java ▴
-
Java cho phép viết class mở rộng từ một class. Class mở rộng từ một class khác được gọi là class con. Class con có khả năng thừa kế các trường và các method từ class cha.
-
- Animal.java
-
123456789101112131415161718
packageorg.o7planning.tutorial.javabasic.inheritance;publicclassAnimal {publicAnimal() {}publicvoidmove() {System.out.println("Move ...!");}// Tiếng kêu của động vật này.publicvoidsay() {System.out.println("<nothing>");}} -
- Cat.java
-
123456789
packageorg.o7planning.tutorial.javabasic.inheritance;publicclassCatextendsAnimal {// Ghi đè method của class Animal.publicvoidsay() {System.out.println("Meo");}} -
- Dog.java
-
123456789
packageorg.o7planning.tutorial.javabasic.inheritance;publicclassDogextendsAnimal {// Ghi đè method của class Animal.publicvoidsay() {System.out.println("Go");}} -
- Ant.java
-
123456
packageorg.o7planning.tutorial.javabasic.inheritance;// Con kiếnpublicclassAntextendsAnimal {} -
- AnimalTest.java
-
123456789101112131415161718192021222324252627282930313233343536
packageorg.o7planning.tutorial.javabasic.inheritance;publicclassAnimalTest {publicstaticvoidmain(String[] args) {// Khai báo một đối tượng Cat.Cat cat =newCat();// Kiểm tra xem 'cat' có phải là đối tượng Animal ko.// Kết quả rõ ràng là true.booleanisAnimal = catinstanceofAnimal;System.out.println("cat instanceof Animal?"+ isAnimal);// ==> Meo// Gọi vào method say() của Cat.cat.say();// Khai báo một đối tượng Animal// Khởi tạo đối tượng thông qua cấu tử của Cat.Animal cat2 =newCat();// ==> Meo// Nó vẫn gọi vào method say() của Cat.cat2.say();// Tạo đối tượng Animal// Thông qua cấu tử của class con, Ant.Animal ant =newAnt();// ==> ..// Ant không có method say()// Nó gọi vào method say() thừa kế từ class cha (Animal).ant.say();}} -
Kết quả chạy ví dụ:
-
- 11- Hướng dẫn tra cứu sử dụng Javadoc ▴
-
-
Javadoc là tài liệu tra cứu cách sử dụng các class thư viện trong java. Chẳng hạn class A gồm có các method nào, trường, cấu tử nào,...
Bạn có thể xem hướng dẫn download và sử dụng Jdk9 Javadoc định dạng CHM tại: -
- 12- Gợi ý ▴
-
Tiếp theo bạn có thể đọc tài liệu "Thừa kế và đa hình trong java" tại: