Tải bản đầy đủ (.ppt) (55 trang)

SLIDE MÔN JAVA CHƯƠNG 3 LỚP TRONG 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 (477.68 KB, 55 trang )

LẬP TRÌNH JAVA

Chương 3

LỚP TRONG JAVA
Đoàn Thanh Sơn
Bộ môn: Lập trình máy tính


Nội dung


Các khái niệm trong lập trình hướng đối tượng



Khai báo lớp



Các lớp lồng nhau



Thừa kế và đa hình



Lớp Abstract




Gói



Phạm vi truy cập



Interface

2/25


Các khái niệm


Đối tượng (Object)
• Thuộc tính (fields)
• Hành vi (methods)

Rectangle
Width: 50cm
Height: 30cm
Color: Yellow
Draw()
changeSize()

3/25



Các khái niệm


Thuộc tính (fields) là dữ liệu trình bày các đặc
điểm về một đối tượng
• Mọi đối tượng của một lớp phải có cùng các thuộc tính
nhưng giá trị của các thuộc tính thì có thể khác nhau
• Một thuộc tính của đối tượng có thể nhận các giá trị
khác nhau tại các thời điểm khác nhau



Ví dụ: đối tượng hình chữ nhật có các thuộc tính
chiều dài, chiều rộng.

4/25


Các khái niệm


Phương thức (method) cho phép tác động lên dữ liệu của đối
tượng
• Các phương thức xác định cách thức hoạt động của một đối
tượng.



Ví dụ: các hoạt động chung của một lớp hình chữ nhật là tính

chu vi và diện tích.

5/25


Các khái niệm


Lớp (Class)
• Là tập hợp các đối tượng cùng loại
• Là khuôn mẫu tạo ra đối tượng
• Là 1 kiểu dữ liệu phần mềm

Lớp: Rectangle

Đối tượng: RectangleA

Đối tượng: RectangleB

6/25


Khai báo lớp


Cú pháp:
class Name{
// Khai báo thuộc tính
// Khai báo phương thức
}


7/25


Khai báo lớp


Khai báo thuộc tính
• Cú pháp: <type><name>[=value];
• Ví dụ

class Circle {
double radius = 1.0;
int color;
}

8/25


Khai báo lớp


Khai báo phương thức :
• Cú pháp: <returned value><name> (){
<code>;
}
• Ví dụ

public class Circle {
double radius = 1.0;

public double findArea(){
return radius * radius * 3.14159;
}
}
9/25


Khai báo lớp


Khai báo
• Constructor (phương thức tạo): là một phương thức đặc biệt, cần
gọi để xây dựng đối tượng.

Không có giá trị trả về
 Phải cùng tên với tên lớp
 Có thể có nhiều phương thức khởi tạo


• Ví dụ:
class Circle {
double radius = 1.0;
Circle(){}
Circle(double rad){
radius = rad;
}
}

10/25



Khai báo lớp


Ví dụ
class Circle {
double radius = 1.0;
int color;
Circle(){}
Circle(double newRadius, int newColor){
radius = newRadius;
color = newColor;
}
void setRadius(double rad){radius=rad;}
double getRadius(){return radius;}
double findArea(){
return radius * radius * 3.14159;
}
}
11/25


Khai báo & tạo đối tượng


Khai báo đối tượng
• Cú pháp: className objectName;
• Ví dụ: Circle myCircle;




Tạo đối tượng
• Cú pháp:
objectName = new className();
• Ví dụ:
myCircle=new Circle();
myCircle=new Circle(5);

12/25


Khai báo & tạo đối tượng


Khai báo & tạo đối tượng
• Cú pháp: className objName=new className();
• Ví dụ:
Circle myCircle=new Circle();
Circle myCircle=new Circle(5);

13/25


Khai báo & tạo đối tượng


Tham chiếu dữ liệu của đối tượng:

• Cú pháp: objectReference.data
• Ví dụ:

myCircle.radius


Gọi phương thức của đối tượng:

• Cú pháp: objectReference.method()

• Ví dụ:
myCircle.findArea()
myCircle.setRadius(6);

14/25


Ví dụ
public class Main {
public static void main(String args[]) {
Circle myCircle=new Circle(2,1);
double area = myCircle.findArea();
System.out.println("Area is " + area);
}
}

15/25


Mở rộng – Từ khóa this


Là 1 tham chiếu đến đối tượng hiện tại




Ví dụ
class Circle {
double radius = 1.0;
int color;
Circle(double radius, int color){
this.radius = radius;
this.color = color;
}
Circle(newColor){
this(0,newColor);
}
}

16/25


Mở rộng – Từ khóa static


Thuộc tính static
• Ví dụ: static double radius=1.0;



Phương thức static
• Ví dụ:
static double findArea(){

return radius * radius * 3.14159;
}



Có thể được truy cập qua tên lớp
• Ví dụ:
Circle.radius;
Circle.findArea();
17/25


Mở rộng – Từ khóa static


Tất cả các đối tượng cùng 1 lớp chia sẻ giá trị biến static trong
lớp đó.



Phương thức static
• Chỉ có thể gọi các phương thức static khác
• Chỉ truy cập thuộc tính static
• Bên trong phương thức, không thể dùng từ khóa this để truy cập

18/25


Các lớp lồng nhau



Java cho phép định nghĩa 1 lớp bên trong 1 lớp khác



Cấu trúc
class OuterClass {
...
static class StaticNestedClass {
...
}
class InnerClass {
...
}
}
19/25


Các lớp lồng nhau


Ví dụ

class Outer {
int outer_x = 100;
void test() {
Inner inner = new Inner(); inner.display();
}
class Inner {
void display() {

System.out.println("display: outer_x = " + outer_x);
}
}
}
public class Main {
public static void main(String args[]) {
Outer outer = new Outer();
outer.test();
}
}

20/25


Các lớp lồng nhau


Lớp bên ngoài không thể truy cập dữ liệu của lớp bên trong trực
tiếp



Ví dụ

public class Main {
int outer_x = 100;
class Inner {
int y = 10;
void display() {
System.out.println("display: outer_x = " + outer_x);

}
}
void show() {
System.out.println(y);
}
}
21/25


Bài tập


Tìm hiểu các lớp
• String
• StringBuffer
• Math
• ArrayList
• Date
• List

22/25


Thừa kế


Tạo lớp mới từ lớp đã tồn tại
• Lớp mới gọi là lớp con, lớp dẫn xuất (subclass)
• Lớp cũ gọi là lớp cha, lớp cơ sở (superclass)




Cú pháp: class subClass extends superClass{
}

23/25


Thừa kế


Ví dụ

Shape
String color;
Shape(color);
double calculateArea();
String getColor();

Rectangle
Circle
double radius;
double getRadius();

double length;
double width;
double getLength();
double getWidth();
24/25



Thừa kế


Ví dụ

class A {
A() { System.out.println(“Cau truc A"); }
}
class B extends A {
B() { System.out.println(“Cau truc B"); }
}
class C extends B {
C() { System.out.println(“Cau truc C"); }
}
public class Main{
public static void main(String args[]) {
C c = new C();
}
}
25/25


×