Inheritance (Kế Thừa) Trong Java

rcp

Administrator
Trong Java một Class bao giờ cũng kế thừa class Object trong package java.lang.

Khi chúng ta muốn kế thừa một class thì dùng từ extends,

thí dụ: public class Circle extends Point


Point.java

public class Point{
protected int x, y; // coordinates of the Point

// No-argument constructor
public Point() {
setPoint( 0, 0 );
}

// Constructor with argument
public Point( int a, int b ) {
setPoint( a, b );
}

// Set x and y coordinates of Point
public void setPoint( int a, int b ) {
x = a;
y = b;
}

// get x coordinate
public int getX() { return x; }

// get y coordinate
public int getY() { return y; }

// convert the point into a String representation
public String toString() { return "[" + x + ", " + y + "]"; }
}


Circle.java
public class Circle extends Point { // inherits from Point
protected double radius;

// No-argument constructor
public Circle() { // implicit call to superclass constructor occurs here
setRadius( 0 );
}

// Constructor with argument
public Circle( double r, int a, int b ) {
super( a, b ); // call to superclass constructor
setRadius( r );
}

// Set radius of Circle
public void setRadius( double r ) { radius = ( r >= 0.0 ? r : 0.0 ); }

// Get radius of Circle
public double getRadius() { return radius; }

// Calculate area of Circle
public double area() { return Math.PI * radius * radius; }

// convert the Circle to a String
public String toString() { return "Center = " + "[" + x + ", " + y + "]" +"; Radius = " + radius; }
}
 
Sửa lần cuối:

rcp

Administrator
Giải thích như sau:

Thí dụ trên chúng ta có hai class Point, Circle.

1) Trong class Point, x và y được khai báo bằng protected để không cho chương trình nằm ngoài package mà Point là thành viên có thể thay đổi trực tiếp x và y.

2) class Point có những functions để lưu dữ kiện của một điểm.

3) Class Circle kế thừa class Point (public class Circle extends Point. Tất cả những thành viên của Point (ngoại trừ thành viên private và constructors) sẽ được kế thừa xuống cho Circle .

4) Trong contructor của Circle gọi contructor của Point: super(a,b);

  • từ super ở đây thật ra là contructor của class mà mình kế thừa
    ;
  • khi a và b được gởi vào super(a,b); thì trong Point class sẽ gọi: setPoint(a,b); để đặt giá trị x và y.
5) Trong cả class Point Circle có function toString(), các bạn hãy chú ý ở đây vì toString() cũng là một function của Java nằm trong class Object,

6) Tất cả những class chúng ta làm đều kế thừa class Object.

Vậy khi chúng ta khai báo toString() trong Point Circle là chúng ta sử dụng tính "đa dạng" (overriding).


(còn tiếp)

--- rcp ---
 

Facebook Comment

Top