LOGO
Phát triển UD
CSDL 2
Chương 2:
Lập trình hướng đối tượng ngôn ngữ JAVA
Nội dung
Kế thừa
Khai báo kế thừa
Phạm vi sử dụng private, protected, public
Một số từ khoá thông dụng
Final method & Final Class
Abstract class & Interface
Array List <E>
Tạo tài liệu Java doc
Tạo UML Class diagrams
Khai báo kế thừa
1 package tenpackage;
2 public class TenLopCha {
3
//Khai báo các
4
thuộc tính
5
//Khai báo các
phuong th
̛ ̛
ức
}
1 package tenpackage;
2 public class TenLopCon
3 extends TenLopCha{
4
//Khai báo các
5
thuộc tính
//Khai báo các
phuong th
̛ ̛
ức
Object là l
ớp co s
̛ ở nhất trong Java. Trong trường hợp một lớp không khai báo
}
kế thừa từ bất kỳ lớp nào thì lớp Object chính là lớp cha cua nó
̉
Khai báo kế thừa
1 package quanly;
2 public class GiangVien {
3
//Khai báo các
4
thuộc tính
5
//Khai báo các
phuong th
̛ ̛
ức
}
1 package bt1;
2 public class
3 GiangVienCoHuu extends
4 GiangVien{
5
//Khai báo các
thuộc tính
//Khai báo các
phuong th
̛ ̛
ức
}
Phạm vi
protected: Được sử dụng trực tiếp:
Bên trong lớp
Các lớp cùng package
Các lớp con (cùng hoặc khác package)
private:
Được sử dụng trực tiếp bên trong lớp
public: Được sử dụng trực tiếp
Bên trong lớp
Bên ngoài lớp
Các lớp con cùng hoặc khác package + Các lớp khác cùng hoặc khác package
Một số từ khoá thông dụng
Truy xuất lớp hiện tại: this
Truy xuất đến lớp cha: super
Chỉ định phương thức khởi tạo của lớp cha: super(), super(…)
Cài đặt lại phương thức của lớp cha
@Override
public KieuDuLieu tenPhuongthuc(…)
Luu y
̛ ́: phuong th
̛ ̛
ức static không được phép Override
Gọi phương thức của lớp cha: super.tenPhuongThuc(...)
Kiểm tra thể hiện của đối tượng: instanceOf
Một số từ khoá thông dụng
instanceOf
1
2
3
4
5
6
7
8
9
A a = new A();
B b = new B();
if (a instanceof A) {
System.out.println(“a
is an instance of A");
}
if (b instanceof B) {
System.out.println(“b
is an instance of B");
}
Final method
Final Method là một phương được khai báo với từ khóa final
1 //Ví dụ:
2 final public void
Final
Method không được phép override ở lớp kế thừa
3c TenPhuongThuc () {
Cá
phương thức tạo không được phép khai báo với từ khóa final
4
. . .
}
Final method
1 public class GiangVien {
2
...
3
private String name;
4
public final String
5
getName () {. . .}
6
public final void
setName () {. . .}
1 public class
}
2 GiangVienCoHuu extends
3 GiangVien{
4
...
5
@Override
6
public String
7
getName(){ . . .} �
8
@Override
public void setName()
{ . . .} �
}
Final Class
Final Class là một lớp được khai báo với từ khóa final
Final Class không cho phép kế thừa
Ví dụ:
Integer, Double, Float, Long là các Final Class
A là Final Class 🡪 Các lớp khác không thể kế thừa được lớp A
Final Class
1 public final class A{
2
...
3 }
1 public class B extends A{ �
2
...
3 }
Abstract Class
Hình ảnh:
Abstract Class
Abstract Class là một lớp được khai báo với từ khóa abstract.
1 public abstract class
Abstract Class có thể chứa các phương thức abstract hoặc phương thức có cài đặt
2 GiangVien {
Phương thức abstract là phương thức không có cài đặt
3
…
}
1 public abstract class
2 GiangVien {
3
. . .
4
public void nhap(){...}
5
public abstract double
tinhLuong();
Abstract Class
Abstract Class không thể tạo thể hiện
GiangVien gv = new GiangVien() ?
Abstract Class có thể giữ tham chiếu đối tượng của các Sub Class
1 GiangVien gv = new
2 GiangVienCoHuu() �
3 GiangVienCoHuu gvch =
4 new GiangVienCoHuu() ?
GiangVien gv = new
GiangVienThinhGiang() ?
GiangVienThinhGiang gvtg
Abstract Class
Nếu các Sub Class không phải là Abstract Class thì:
Bắt buộc phải cài đặt lại tất cả các phương thức abstract của lớp cha.
Không bắt buộc cài đặt lại các phương thức không là abstract của lớp cha.
Nếu các Sub Class là Abstract Class thì không bắt buộc phải cài đặt lại phương thức abstract /
không abstract của lớp cha
Abstract Class
1 package qlgv;
2 public abstract class
3 GiangVien{
4
//Khai báo các thuộc
5
tính
6
. . .
7
//Khai báo và cài đặt
8
các phương thức
9
không là abstract
. . .
Abstract Class
Sub Class GiangVienCoHuu bắt buộc cài đặt lại phương thức abstract tinhLuong() của lớp
GiangVien.
Sub Class GiangVienThinhGiang bắt buộc phải cài đặt lại phương thức abstract tinhLuong() của
lớp GiangVien.
Abstract Class
1 package qlgv;
2 public class
3 GiangVienCoHuu extends
4 GiangVien{
5
. . .
6
@Override
7
public double
8
tinhLuong()
9
{
. . .
}
}
Abstract Class
1 package qlgv;
2 public class
3 GiangVienThinhGiang
4 extends GiangVien{
5
. . .
6
@Override
7
public double
8
tinhLuong()
9
{
. . .
}
}
Interface
Được khai báo với từ khóa interface
public interface Hinh{…}
Interface chứa:
Các hằng số
Các phương thức abstract (không có cài đặt)
1 public interface Hinh{
2 public static final double
3 PI=3.14;
4 public void
5 tinhDienTich();
public void tinhChuVi();
Interface
Một interface có thể kế thừa từ nhiều interface khác
1 public interface IA{…}
2 public interface IB{…}
Một lớp có thể kế thừa từ 1 lớp và có thể cài đặt lại từ nhiều interface
3 public interface IC extends
IA, IB {…}
1 public class A{…}
2 public interface IB{…}
3 public interface IC{…}
4 public class B extends A
Nếimplements IB, IC{…}
u một lớp khi implements từ một inteface thì lớp đó phải cài đặt lại
tất cả các phương thức abstract của interface
Interface
1 public interface Hinh {
2 public double
3 tinhDienTich();
public double
1 public class HinhTamGiac
tinhChuVi();
2 implements Hinh{
}
3 @Override
4 public double
5 tinhDienTich(){
6 . . .
7 }
8 @Override
Interface
1 public interface Hinh {
2 public double
3 tinhDienTich();
public double
1 public class HinhTron
tinhChuVi();
2 implements Hinh{
}
3 @Override
4 public double
5 tinhDienTich(){
6 . . .
7 }
8 @Override
9 public double
Interface
1 public interface Hinh {
2 public double
3 tinhDienTich();
4 public double
1 public class HinhChuNhat
tinhChuVi();
2 implements Hinh{
}
3 @Override
4 public double
5 tinhDienTich(){
6 . . .
7 }
8 @Override
9 public double
Bài tập: Hình học
Xây dựng các lớp HinhHoc, HinhChuNhat, HinhTamGiac, HinhTron và viết chương trình cho
phép:
Nhập vào một mảng hình học (có thể là HinhChuNhat, HinhTamGiac, HinhTron)
Xuất ra mảng các hình học
Tính tổng diện tích
Tính tổng chu vi
Tìm hình có chu vi lớn nhất / nhỏ nhất & Xuất ra
Tìm hình có diện tích lớn nhât / nhỏ nhất & Xuất ra
Kiểm tra tam giác đều, hình vuông
…