[ iT ] Forums: Giải thích ý nghĩa và cách dùng các từ khoá trong Java - [ iT ] Forums

Jump to content


Balloon vs. Thorns

MU Phuc Hung

Làm Việc Tài Nhà

Mu Da Nang

Tuyển Nhân Viên Bán Hàng



Trang 1 / 1
  • Bạn không thể gửi chủ đề mới
  • Bạn không thể gửi trả lời cho chủ đề này

Giải thích ý nghĩa và cách dùng các từ khoá trong Java Lập trình hướng đối tượng Đánh Giá: -----

#1 User is offline   PhươngĐiệp2410 

  • Nhóm: VIP
  • Bài Viết: 1917
  • Gia Nhập: 08-March 07
  • Thạc sĩ CSTH
  • PipPipPipPipPip

  Gửi vào 19 November 2007 - 05:03 PM

Quote

Kế thừa (extends):
Một lớp A1 kế thừa lớp A nghĩa là lớp A1 chứa tất cả thuộc tính, phương thức là protected hoặc public của A.
Vd:

CODE

public class A {
public int a;
protected int b;
private int c;
/**
* constructor – Hàm khởi tạo - của lớp A.
*/
public A() {
a = 0;
b = 1;
c = 2;
}
public int getNextA() {
return a+1;
}
public int getNextB() {
return b+1;
}
public int getNextC() {
return c+1;
}
}
public class A1 extends A {
public void setA (int a) {
this.a = a;
}
public void setB (int b ){
this.b = b;
}
/**
* Hàm setC này sai (bị báo lỗi) vì không thể truy cập tới biến c.
*/
public void setC (int c) {
this.c = c;
}
/**
* hàm main sau sẽ in ra kết quả: a = 1; b = 2; c = 3;
*/
public static void main(String args[]) {
A1 a1 = new A1();
System.out.println("a = " + a1.getNextA()
+ "; b = " + a1.getNextB()
+ "; c = " + a1.getNextC() + ";");
}
}

Bài viết này được chỉnh sửa bởi PhươngĐiệp2410: 19 November 2007 - 05:07 PM

<div align='center'><!--coloro:#008080--><span style="color:#008080"><!--/coloro--><i><b><!--sizeo:5--><span style="font-size:18pt;line-height:100%"><!--/sizeo--><a href="http://winsocks.net/" target="_blank">http://winsocks.net/</a>

<!--sizec--></span><!--/sizec--></b></i><!--colorc--></span><!--/colorc--><!--sizeo:3--><span style="font-size:12pt;line-height:100%"><!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff"><!--/coloro--><b>Are You looking for a good socks 5 service? But you don't know where to buy?
Welcome to WinSocks.Net - Crazy Socks Service
Here we provide Fresh Socks 5 with fast speed , less blacklist, especially price is cheaper than others service.</b><!--colorc--></span><!--/colorc--><!--sizec--></span><!--/sizec--> <!--sizeo:3--><span style="font-size:12pt;line-height:100%"><!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff"><!--/coloro--><b><i>More over, if you want to test our socks 5 before buying, don't be hesitate to contact our supporter through yahoo to receive Free Socks 5</i></b><!--colorc--></span><!--/colorc--><!--sizec--></span><!--/sizec-->
</div>
0

#2 User is offline   PhươngĐiệp2410 

  • Nhóm: VIP
  • Bài Viết: 1917
  • Gia Nhập: 08-March 07
  • Thạc sĩ CSTH
  • PipPipPipPipPip

Gửi vào 19 November 2007 - 05:07 PM

Quote

Từ khóa abstract:
Nếu lớp A là abstract thì lớp A không thể tự khởi tạo mà nó chỉ được dùng cho việc kế thừa.
vd:

CODE

abstract class A {
private int a;
public A() {
a = 100;
}
public int getA() {
return a;
}
}
public class A1 extends A {
public A1() {
}
public static void main(String args[]) {
A a = new A(); //--> sai
A1 a1 = new A1();
System.out.println("a = " + a1.getA());//kết quả là: a = 100
}
}



Nếu phương setA của lớp A là abstract thì nó không được có phần thân hàm mà phần thân hàm sẽ được viết trong lớp kế thừa A. Lớp A cũng phải là abstract.

CODE

abstract class A {
protected int a;
public A() {
a = 100;
}
public int getA() {
return a;
}
/**
* Nếu phương thức setA có phần thân hàm sẽ bị báo lỗi.
*/
abstract void setA(int a);
}

public class A1 extends A {
/**
* Nếu lớp A1 không có hàm setA thì sẽ bị báo lỗi.
*/
public void setA(int a) {
this.a = a;
}
public static void main(String args[]) {
A1 a1 = new A1();
a1.setA(1);
System.out.println("a = " + a1.getA());//kết quả là: a = 1
}
}

Bài viết này được chỉnh sửa bởi PhươngĐiệp2410: 19 November 2007 - 05:08 PM

<div align='center'><!--coloro:#008080--><span style="color:#008080"><!--/coloro--><i><b><!--sizeo:5--><span style="font-size:18pt;line-height:100%"><!--/sizeo--><a href="http://winsocks.net/" target="_blank">http://winsocks.net/</a>

<!--sizec--></span><!--/sizec--></b></i><!--colorc--></span><!--/colorc--><!--sizeo:3--><span style="font-size:12pt;line-height:100%"><!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff"><!--/coloro--><b>Are You looking for a good socks 5 service? But you don't know where to buy?
Welcome to WinSocks.Net - Crazy Socks Service
Here we provide Fresh Socks 5 with fast speed , less blacklist, especially price is cheaper than others service.</b><!--colorc--></span><!--/colorc--><!--sizec--></span><!--/sizec--> <!--sizeo:3--><span style="font-size:12pt;line-height:100%"><!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff"><!--/coloro--><b><i>More over, if you want to test our socks 5 before buying, don't be hesitate to contact our supporter through yahoo to receive Free Socks 5</i></b><!--colorc--></span><!--/colorc--><!--sizec--></span><!--/sizec-->
</div>
0

#3 User is offline   PhươngĐiệp2410 

  • Nhóm: VIP
  • Bài Viết: 1917
  • Gia Nhập: 08-March 07
  • Thạc sĩ CSTH
  • PipPipPipPipPip

Gửi vào 19 November 2007 - 05:08 PM

Quote

Từ khóa final:
Nếu lớp A là final thì lớp A sẽ không được kế thừa bởi bất kỳ lớp nào.

CODE

final class A {
public a;
public A() {
}
//và các phương thức khác...
}
/**
* lớp A1 sau sẽ bị báo lỗi.
*/
public class A1 extends A {
}


Nếu phương thức getA là final thì phương thức này sẽ không thể bị override bởi các lớp con.
vd:

CODE

public class A {
public int a;
public A() {
a = 100;
}
final int getA() {
return a;
}
}
public class A1 extends A {
/**
* vì không thể override hàm getA nên sự xuất hiện của hàm getA ở
* lớp A1 là sai --> bị báo lỗi.
*/
int getA() {
return a-1;
}
}


Nếu một biến a (thuộc lớp A) là final thì biến này là một hằng, và phải được khởi tạo trong constructor hoặc lúc khai báo. Nếu gán giá trị cho a ngoài constructor hoặc ngoài lúc khai báo thì sẽ bị báo lỗi.
vd

CODE

public class A {
final int a; //có thể gán giá trị tại đây.
public A() {
//nếu lúc khai báo chưa gán giá trị
//mà lại không được khởi tạo trong constructor --> bị báo lỗi
a = 100;
}
/**
* nếu có thêm phương thức sau thì sẽ bị báo lỗi.
*/
public setA (int a) {
this.a = a; //sai
}
}

<div align='center'><!--coloro:#008080--><span style="color:#008080"><!--/coloro--><i><b><!--sizeo:5--><span style="font-size:18pt;line-height:100%"><!--/sizeo--><a href="http://winsocks.net/" target="_blank">http://winsocks.net/</a>

<!--sizec--></span><!--/sizec--></b></i><!--colorc--></span><!--/colorc--><!--sizeo:3--><span style="font-size:12pt;line-height:100%"><!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff"><!--/coloro--><b>Are You looking for a good socks 5 service? But you don't know where to buy?
Welcome to WinSocks.Net - Crazy Socks Service
Here we provide Fresh Socks 5 with fast speed , less blacklist, especially price is cheaper than others service.</b><!--colorc--></span><!--/colorc--><!--sizec--></span><!--/sizec--> <!--sizeo:3--><span style="font-size:12pt;line-height:100%"><!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff"><!--/coloro--><b><i>More over, if you want to test our socks 5 before buying, don't be hesitate to contact our supporter through yahoo to receive Free Socks 5</i></b><!--colorc--></span><!--/colorc--><!--sizec--></span><!--/sizec-->
</div>
0

#4 User is offline   PhươngĐiệp2410 

  • Nhóm: VIP
  • Bài Viết: 1917
  • Gia Nhập: 08-March 07
  • Thạc sĩ CSTH
  • PipPipPipPipPip

Gửi vào 19 November 2007 - 05:09 PM

Quote

Từ khóa interface và implements:
Một lớp A là interface nghĩa là mọi phương thức, hàm đều không có phần thân hàm mà chỉ là liệt kê những phương thức, hàm cho các lớp khác implements. Nếu lớp A1 implements interface A và không có đủ các phương thức, hàm được liệt kê trong A thì sẽ bị báo lỗi.
Vd :
CODE

interface A {
public int getNextA();
public void setA(int a);
}
public class A1 {
private int a = 0;
public static void main(String args[]) {
A a = new A1();
a.setA(10);
System.out.println("a = " + a.getNextA());//kết quả là: a = 11
}
/**
* Nếu thiếu một trong 2 phương thức sau sẽ báo lỗi.
*/
public int getNextA() {
return a+1;
}
public void setA(int a) {
this.a = a;
}
}


Trong JAVA cũng có nhiều lớp như vậy.
Vd như :
CODE

java.util.List lst = new java.util.ArrayList();
java.util.List lst1 = new java.util.LinkedList();


Ngoài ra còn có các Listener như ActionListener,... cũng được dùng như vậy.
Ích lợi của việc dùng interface là chúng ta có thể đặt ra một chuẩn giao tiếp. Như vậy, khi chúng ta không muốn sử dụng lớp cũ thì chúng ta cứ việc dùng một lớp mới, giúp giảm thiểu sử thay đổi code khi đổi từ lớp cũ sang lớp mới. Ví dự như với lớp List bên trên, khi chúng ta không thích sử dụng danh sách kề (ArrayList) nữa thì chúng ta có thể dễ dàng chuyển sang dùng danh sách liên kết (LinkedList) mà không phải thay đổi tiếp đoạn code bên dưới.

<div align='center'><!--coloro:#008080--><span style="color:#008080"><!--/coloro--><i><b><!--sizeo:5--><span style="font-size:18pt;line-height:100%"><!--/sizeo--><a href="http://winsocks.net/" target="_blank">http://winsocks.net/</a>

<!--sizec--></span><!--/sizec--></b></i><!--colorc--></span><!--/colorc--><!--sizeo:3--><span style="font-size:12pt;line-height:100%"><!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff"><!--/coloro--><b>Are You looking for a good socks 5 service? But you don't know where to buy?
Welcome to WinSocks.Net - Crazy Socks Service
Here we provide Fresh Socks 5 with fast speed , less blacklist, especially price is cheaper than others service.</b><!--colorc--></span><!--/colorc--><!--sizec--></span><!--/sizec--> <!--sizeo:3--><span style="font-size:12pt;line-height:100%"><!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff"><!--/coloro--><b><i>More over, if you want to test our socks 5 before buying, don't be hesitate to contact our supporter through yahoo to receive Free Socks 5</i></b><!--colorc--></span><!--/colorc--><!--sizec--></span><!--/sizec-->
</div>
0

#5 User is offline   PhươngĐiệp2410 

  • Nhóm: VIP
  • Bài Viết: 1917
  • Gia Nhập: 08-March 07
  • Thạc sĩ CSTH
  • PipPipPipPipPip

Gửi vào 19 November 2007 - 05:10 PM

Quote

Từ khóa static:
Dùng để định nghĩa một biến của một lớp. Đây có thể coi như là một biến toàn cục, vì dù lớp chứa biến static được khởi tao bao nhiêu lần thì nó chỉ có duy nhất một biến static (nằm ở cùng một vùng nhớ). Biến static cũng được dùng để khai báo một phương thức. Một phương thức static chỉ có thể truy cập tới biến static của class mà thôi.
Vd :

CODE

public class Math {
public static double s_pi = 3.14;
public double m_pi = 3.14;
public static double calculateCircle(double r) {
return r*r*s_pi; //nếu dùng m_pi thì sẽ sai.
}
}
public class MathExecute {
public static void main(String args[]) {
System.out.println("pi = " + Math.s_pi);//kết quả là pi = 3.14
Math.s_pi = 3.1412;
Math m = new Math();
System.out.println("pi = " + m.s_pi);//kết quả là pi = 3.1412
m.s_pi = 3.141;
System.out.println("pi = " + Math.s_pi);//kết quả là pi = 3.141
}
}

<div align='center'><!--coloro:#008080--><span style="color:#008080"><!--/coloro--><i><b><!--sizeo:5--><span style="font-size:18pt;line-height:100%"><!--/sizeo--><a href="http://winsocks.net/" target="_blank">http://winsocks.net/</a>

<!--sizec--></span><!--/sizec--></b></i><!--colorc--></span><!--/colorc--><!--sizeo:3--><span style="font-size:12pt;line-height:100%"><!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff"><!--/coloro--><b>Are You looking for a good socks 5 service? But you don't know where to buy?
Welcome to WinSocks.Net - Crazy Socks Service
Here we provide Fresh Socks 5 with fast speed , less blacklist, especially price is cheaper than others service.</b><!--colorc--></span><!--/colorc--><!--sizec--></span><!--/sizec--> <!--sizeo:3--><span style="font-size:12pt;line-height:100%"><!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff"><!--/coloro--><b><i>More over, if you want to test our socks 5 before buying, don't be hesitate to contact our supporter through yahoo to receive Free Socks 5</i></b><!--colorc--></span><!--/colorc--><!--sizec--></span><!--/sizec-->
</div>
0

#6 User is offline   Lãng Tử Đa Tình 

  • Nhóm: Advance Member
  • Bài Viết: 428
  • Gia Nhập: 09-January 07
  • Củ Chuối Thục Sơn
  • PipPipPip

Gửi vào 27 August 2009 - 10:22 PM

good job
Hard times show whether a friend is a true friend
0

#7 User is offline   Xuân-Hoàn 

  • Nhóm: Member
  • Bài Viết: 1
  • Gia Nhập: 01-April 09
  • Thành viên mới

Gửi vào 06 May 2010 - 10:02 AM

View PostPhươngĐiệp2410, on Nov 19 2007, 05:08 PM, said:

Quote

Từ khóa final:
Nếu lớp A là final thì lớp A sẽ không được kế thừa bởi bất kỳ lớp nào.

CODE

final class A {
public a;
public A() {
}
//và các phương thức khác...
}
/**
* lớp A1 sau sẽ bị báo lỗi.
*/
public class A1 extends A {
}


Nếu phương thức getA là final thì phương thức này sẽ không thể bị override bởi các lớp con.
vd:

CODE

public class A {
public int a;
public A() {
a = 100;
}
final int getA() {
return a;
}
}
public class A1 extends A {
/**
* vì không thể override hàm getA nên sự xuất hiện của hàm getA ở
* lớp A1 là sai --> bị báo lỗi.
*/
int getA() {
return a-1;
}
}


Nếu một biến a (thuộc lớp A) là final thì biến này là một hằng, và phải được khởi tạo trong constructor hoặc lúc khai báo. Nếu gán giá trị cho a ngoài constructor hoặc ngoài lúc khai báo thì sẽ bị báo lỗi.
vd

CODE

public class A {
final int a; //có thể gán giá trị tại đây.
public A() {
//nếu lúc khai báo chưa gán giá trị
//mà lại không được khởi tạo trong constructor --> bị báo lỗi
a = 100;
}
/**
* nếu có thêm phương thức sau thì sẽ bị báo lỗi.
*/
public setA (int a) {
this.a = a; //sai
}
}


Test
0

Chia sẻ chủ để


Trang 1 / 1
  • Bạn không thể gửi chủ đề mới
  • Bạn không thể gửi trả lời cho chủ đề này

1 người đang đọc chủ đề này
0 thành viên, 1 khách, 0 thành viên ẩn