L?p không th? có l?p d?n xu?t t? nó (không có l?p con) g?i là l?p vô sinh, hay nói cách khác không th? k? th?a ???c t? m?t l?p vô sinh. L?p vô sinh dùng ?? h?n ch?, ng?n ng?a các l?p khác d?n xu?t t? nó.
?? khai báo m?t l?p là l?p vô sinh, chúng ta dùng t? khóa final class.
T?t c? các ph??ng th?c c?a l?p vô sinh ??u vô sinh, nh?ng các thu?c tính c?a l?p vô sinh thì có th? không vô sinh.
- Xem thêm video blog StudyAndShare
?
Ví d?:
PHP:
public final class A {
public final int x;
private int y;
public final void method_1(){
//
}
public final void method_2(){
//
}
}
M?t l?p tr?u t??ng thì không có th? hi?n ngh?a là ta không th? kh?i t?o nó b?ng toán t? new, và m?t ph??ng th?c trong nó là abstract thì ch? ???c ??a ra ??nh ngh?a (khai báo) mà không ???c th?c thi và nó s? ???c override l?i trong các l?p con k? th?a. Và trong l?p mà t?n t?i ph??ng th?c abstract thì l?p ?ó c?ng ???c ??nh ngh?a abstract.
- L?p tr?u t??ng là l?p không có khai báo các thu?c tính thành ph?n và các ph??ng th?c.
- B?t c? class nào k?t th?a abstract class nào ?ó ph?i ??nh ngh?a l?i các abstract mothods c?a l?p mà nó th?a k? ho?c không ??nh ngh?a l?i nh?ng ph?i ghi l?i abstract mothods ?ó.
- Abstract class là class có ch?a các abstract mothods
- Các methods trong abstract class ph?i khai báo v?i t? khóa abstract (không gi?ng nh? interface vì interface m?c ??nh gán abstract cho các mothods)
- M?t abstract class có th? ch?a c? abstract mothods và các mothods th??ng.
- Khi m?t class có ch?a abstract mothod thì b?t bu?c ph?i có t? khóa abstract ??ng tr??c tên class ?ó.
PHP:
abstract class A{
abstract void method_1();
}
public class B extends A{
@Override
public void method_1(){
// cài ??t chi ti?t cho ph??ng th?c method_1
// trong l?p con B.
//
}
}
public class C extends A{
@Override
public void method_1(){
// cài ??t chi ti?t cho ph??ng th?c method_1
// trong l?p con C.
//
}
}
* Các ph??ng th?c ???c khai báo dùng các ti?n t? private và static thì không ???c khai báo là tr?u t??ng abstract. Ti?n t? private thì không th? truy xu?t t? các l?p d?n xu?t, còn ti?n t? static thì ch? dùng riêng cho l?p khai báo mà thôi.
* Ph??ng th?c trong abstract class có 2 cách ?? khai báo:
- Khai báo bình th??ng nh? class
- Khai báo gi?ng nh? interface nh?ng ph?i có thêm t? khóa abstract
Code demo:
PHP:
package java.demo.android.vn;
abstract class nhanSu {
abstract void show();
}
class hocSinh extends nhanSu {
public String hoTen;
public int namSinh;
public void show() {
System.out.println("Hello " + hoTen + " N?m sinh: " + namSinh);
}
}
public class JavaDemoAndroidVn {
public static void main(String[] args) {
hocSinh a = new hocSinh();
a.hoTen = "V? V?n A";
a.namSinh = 1992;
a.show();
}
}
- Nh? chúng ta ?ã bi?t m?t l?p trong java ch? có m?t siêu l?p (super class) tr?c ti?p hay m?t cha duy nh?t (??n th?a k?). ?? tránh ?i tính ph?c t?p c?a ?a th?a k? (multi-inheritance) trong l?p trình h??ng ??i t??ng, Java thay th? b?ng interface. M?t l?p có th? k? th?a t? nhi?u interface v?i các l?p khác ?? th?a h??ng thêm vùng d? li?u và ph??ng th?c c?a các interface này.
- Interface ???c khai báo nh? m?t l?p. Nh?ng các thu?c tính c?a interface là các h?ng (khai báo dùng t? khóa final) và các ph??ng th?c c?a interface là tr?u t??ng (m?c dù không có t?
khóa abstract).
- Mothods tr?u t??ng là các mothods ch? có ph?n header, không có ph?n body.(Xem ví d? phía d??i)
- Trong các l?p có cài ??t các interface ta ph?i ti?n hành cài ??t c? th? các ph??ng th?c này.
- Interface ???c ??nh ngh?a nh?m làm cho code rành m?ch h?n vì các class có th? implements các interface.
Ví d?: Code ví d? c?a video bên blog StudyAndShare
?
PHP:
public class DemoJavaBasic {
public static void main(String[] args) {
Manager mana = new Manager();
mana.show();
}
}
interface Human{
public static final int AVG_AGE = 100;
int AVG_WEIGHT = 60;
public abstract void show();
void study();
}
class Manager implements Human{
@Override
public void show() {
System.out.println("Tuoi trung bình: "+ AVG_AGE);
}
@Override
public void study() {
// TODO Auto-generated method stub
}
}
PHP:
public interface InterfaceName extends interface1, interface2,interface3{//
}
PHP:
interface DienTich {
public abstract void sHinhVuong(float a);
public abstract void sHinhChuNhat(float a, float b);
}
interface ChuVi {
public abstract void cVHinhVuong(floa
Available link for download