Tải bản đầy đủ (.pdf) (50 trang)

Bài giảng Lập trình Java - Chương 2: Lập trình hướng đối tượng ngôn ngữ Java

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.82 MB, 50 trang )

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



×