1. Kiểu dữ liệu cơ sở
2. Mảng (Array)
3. Tập hợp (Collection)
4. Hướng đối tượng trong Java
5. Bẫy lỗi ngoại lệ (Exception)
116 trang |
Chia sẻ: tieuaka001 | Lượt xem: 762 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Phát triển ứng dụng trên thiết bị di động - Lương Trần Hy Hiến, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
hai bước:
▪ Đầu tiên, một biến có kiểu của lớp được khai báo, biến này
chưa được định nghĩa là một ĐT. Nó chỉ là biến tham chiếu
đến ĐT.
▪ Tiếp theo, một bản sao chép ĐT của lớp trên bộ nhớ được tạo
ra và được gán cho biến. Điều này được thực hiện bằng toán
tử new
Toán tử new cấp phát bộ nhớ động cho ĐT và trả về
tham chiếu tới nó
Tất cả các ĐT của lớp phải được cấp phát động
Phương thức khởi tạo
Ví dụ: Khai báo đối tượng có kiểu TamGiac
TamGiac t;
t = new TamGiac();
TamGiac t1;
t1 = new TamGiac(2,3,4);
t
TamGiac t
a=0 b=0 c=0
t1
TamGiac t1
a=2 b=3 C=4
Phương thức khởi tạo
Ví dụ: Truy xuất các thành phần của đối tượng
TamGiac t;
t = new TamGiac();
t.getA() = 2;
t.getB() = 3;
t.getC() = 4;
System.out.printf(“Tam giac (%d, %d, %d)”,
t.getA(), t.getB(), t.getC());
Phương thức xử lý
Một phương thức được định nghĩa để cài đặt cho một
hành động của đối tượng
Cú pháp:
BổTừTruyXuất KiểuDữLiệu
TênPhươngThức(DanhSáchThamSố){
//xử lý của phương thức
}
TamGiac
a
b
c
tinhChuVi()
tinhDienTich()
Phương thức
Phương thức xử lý
Ví dụ: Khai báo phương thức tính chu vi cho lớp tam giác
class TamGiac{
// biến thực thể
private double a, b, c;
// hàm dựng mặc định
public TamGiac() {}
// phương thức tính chu vi
public double tinhChuVi(){
return a + b + c;
}
}
Phương thức xử lý
Ví dụ: tính chu vi tam giác
TamGiac t = new TamGiac();
t.getA() = 2;
t.getB() = 3;
t.getC() = 4;
System.out.printf(“Tam giac (%f, %f, %f)”,
t.getA(), t.getB(), t.getC());
System.out.printf(“Chu vi tam giac: %f”,
t.tinhChuVi());
Truyền tham trị
Được sử dụng cho các kiểu dữ liệu cơ bản, mọi thay
đổi diễn ra bên trong phương thức không ảnh hưởng
đến giá trị truyền vào
Truyền tham chiếu
Thay đổi bên trong phương thức sẽ làm thay đối giá
trị của tham số truyền vào
Tham số của phương thức có kiểu dữ liệu là tham
chiếu sẽ được truyền theo kiểu tham trị chứ không
phải kiểu tham chiếu. Ví dụ: khi phương thức kết thúc,
tham chiếu này vẫn trỏ đến cùng đối tượng khi truyền
vào
Truyền tham số cho phương thức
Ví dụ: Truyền tham trị
public static void Swap(int a,int b){
int temp = a; a = b; b = temp;
}
public static void main(String args[]){
int a = 1, b = 2;
System.out.printf(“a = %d, b = %d”, a, b);
Swap(a,b);
System.out.printf(“a = %d, b = %d”, a, b);
}
a=?
b=?
Truyền tham số cho phương thức
Ví dụ: Truyền tham chiếu
public static void Swap(MyClass a,MyClass b){
MyClass temp = a; a = b; b = temp;
}
public static void main(String args[]){
MyClass a = new MyClass(1);
MyClass b = new MyClass(2);
System.out.printf(“a = %d, b = %d”, a.x, b.x);
Swap(a,b);
System.out.printf(“a = %d, b = %d”, a.x, b.x);
}
a=?
b=?
class MyClass{
public int x;
public MyClass(int _x){
x=_x;
}
}
Truyền tham số cho phương thức
Ví dụ: truyền tham chiếu
public static void Swap(MyClass a,MyClass b){
MyClass temp = new MyClass(a);
a.x = b.x; b.x = temp.x;
}
public static void main(String args[]){
MyClass a = new MyClass(1);
MyClass b = new MyClass(2);
System.out.printf(“a = %d, b = %d”, a.x, b.x);
Swap(a,b);
System.out.printf(“a = %d, b = %d”, a.x, b.x);
}
a=?
b=?
class MyClass{
public int x;
public MyClass(int _x){
x=_x;
}
}
Phương thức có tham số thay đổi
Tham số thay đổi cho phép gọi phương thức với số
tham số khác nhau.
Cú pháp
KiểuDữLiệu TênPhươngThức
(KiểuDữLiệu ... TênThamSố)
{
// các lệnh
}
Phương thức có tham số thay đổi
Ví dụ:
public static void Test(int a){
for (int i : a)
System.out.println(i);
}
public static void main(String args[]){
Test(1, 2, 3, 4, 5, 6);
Test(10, 20);
}
Các lớp trong Java tồn tại trong một hệ thống
thứ bậc, gọi là cây thừa kế
Các lớp ở bậc trên một lớp đã cho trong một hệ
thống thứ bậc là lớp cha (superclass) của lớp đó
Lớp cụ thể là một lớp con (subclass) của tất cả
các lớp bậc cao hơn
90
Lớp con có thể truy cập các biến và phương thức công
khai (public) của lớp cha
Lớp con có thể truy cập các biến và phương thức được
bảo vệ (protected) của lớp cha
Các hàm tạo là đặc biệt, chúng không được thừa kế
Lớp con không thể truy cập thành viên private của lớp
cha
Sử dụng phương thức để truy cập thành viên private của
lớp
91
Truy cập đến các thành viên của lớp cha bằng
cách sử dụng từ khóa super
Có thể sử dụng super để truy cập đến hàm tạo
của lớp cha
92
Ngăn cản ghi đè hàm
Ngăn cản thừa kế
93
Java package là một nhóm các lớp và giao diện có liên hệ
với nhau được tổ chức thành một đơn vị để quản lý.
Package có thể do người dùng tạo ra hoặc do Java tạo sẵn.
Lệnh package, nếu sử dụng, phải đặt ở đầu chương trình
Lệnh import được dùng để import một hoặc nhiều lớp từ
package vào chương trình
Chỉ định từ truy xuất điều khiển việc truy xuất các lớp và sự
nhìn thấy các thành viên của lớp
Chỉ định từ truy xuất cho biến và phương thức là các từ khóa
được dùng để xác định các biến và phương thức cần được
khai báo để điều khiển việc truy xuất từ người dùng
Package được định nghĩa trước
import java.util.*;
import java.io.*;
class A
{
}
Bạn có thể xem nội
dung của các package
Bằng WINZAR/ WINZIP
Các class mà dự định sẽ được sử dụng bên
ngoài package sẽ được khai báo là public.
Các package khác nhau có thể có các class
trùng tên với nhau.
Nếu các package khác nhau mà có các class có
tên trùng nhau thì khi sử dụng bắt buộc phải
import đầy đủ tên package và tên class.
96
97
Có 4 kiểu truy cập
vào package
private protected public default
98
Từ khóa
Trong cùng
class
Trong cùng
package
Trong sub-
package
Package
khác
private Có Không Không Không
default Có Có Không Không
protected Có Có Có Không
public Có Có Có Có
Truy cập các thành phần trong package
99
private: Chỉ có thể
được truy cập bởi
chính class đó.
default: Được truy cập
bởi các class
cùng package.
protected: Được truy
cập bởi các class cùng
trong package và các
class là sub-class
của class này.
public: Được truy cập
bởi tất cả các class ở
cùng package hay
khác package.
Package được định nghĩa trước
● Tạo package
package myPackage;
class A
{ .
}
● Sử dụng package
import myPackage.A;
class B
{ .
void method3()
{ A obj = new A();
..
}
}
Cú pháp:
import tên_package.tên_class
Ví dụ:
import mypack.MyClass;
import mypack.*;
Ký hiệu *: là import tất cả các class trong
package mypack.
101
102
Tên Package Mô tả
java.lang
Chứa các class như Integer, String,
System và được tự động import vào mỗi
chương trình Java.
java.util
Các các Java collections như List, Set, Map
java.io
Chứa các class liên quan đến việc nhập,
xuất dữ liệu như File, Reader, Writer
java.awt và
java.swing
Chứa các class liên quan đến việc trình bày
giao diện đồ họa và xử lý sự kiện.
. . .
103
Java cung cấp 5 từ khoá sau để xử lý các ngoại lệ:
try
catch
throw
throws
finally
104
try{
// đoạn mã có khả năng gây ra ngoại lệ
}
catch(Exception e1) {
// Xử lý
}
catch(Exception e2) {
// Xử lý
}
...
catch(Exception eN) {
// Xử lý
}
finally {
// luôn được thực hiện cho dù ngoại lệ có xảy ra hay không.
}
105
NullPointerException
ArrayIndexOfBoundException
ArthmeticException
FileNotFoundException
EOFException
IllegalArgumentException
106
107
• Class Throwable xử lý lỗi và ngoại lệ (Error,
Exception).
• Tất cả các class dưới đây đều nằm trong gói
java.lang, ngoại trừ class IOException là nằm
trong gói java.io
ClassNotFoundException
CloneNotSupportedException
IllegalAccessException
InstantialtionException
IOException *
RuntimeException
LinkageError
ThreadDeath
VitualMachineError
ArithmeticException
IllegalArgumentException
IndexOutOfBoundsException
NullPointerException
More class
Exception
Error
Throwable
108
Ngoại lệ ‘unchecked’:
• Là các ngoại lệ không cần phải ‘catch’ khi viết
mã
• Là các class Error, RuntimeException và các
lớp con của chúng
Ngoại lệ ‘checked’:
• Là các ngoại lệ phải được ‘catch’ khi viết mã
• Là các class còn lại
109
Một số ngoại lệ ‘checked’:
• ClassNotFoundException
• IOException
• FileNotFoundException
• EOFException
Một số ngoại lệ ‘unchecked’
• ArithmeticException
• IllegalArgumentException
• IndexOutOfBoundException
• NullPointerException
• InputMismatchException
Từ khóa throws được sử dụng trong method
dùng để đề xuất các ngoại lệ có thể xảy ra trong
method đó. Có những method sử dụng một số
lệnh mà các lệnh đó có thể xảy ra ngoại lệ
‘checked’ nên chúng ta bắt buộc phải xử lý
ngoại lệ đó. Ví dụ khi xử lý các lệnh thao tác với
file, phải xử lý ngoại lệ ‘checked’
FileNotFoundException. Tất cả các ngoại lệ
được khai báo bởi throws đều phải được xử lý,
nếu không có đủ sẽ bị thông báo lỗi.
110
111
112
Dùng cách throws trong phương thức main
113
bằng cách kế thừa class Exception của Java:
114
115
116
Các file đính kèm theo tài liệu này:
- slide01_javacoban_2956.pdf