- Bài 1: Tổng quan ngôn ngữ Java
- Bài 2: Hướng dẫn cài đặt và cấu hình Java
- Bài 3: Hướng dẫn cài đặt và cấu hình Intellij IDEA trên Window
- Bài 4: Tạo Project và làm quen với Intelij IDEA
- Bài 5: Cú pháp và quy tắc cơ bản trong Java
- Bài 6: Các kiểu dữ liệu trong Java
- Bài 7: Các kiểu biến trong Java
- Bài 8: Toán tử trong Java
- Bài 9: Hệ thống Unicode trong Java
- Bài 10: Các kiểu vòng lặp
- Bài 11: Câu lệnh điều khiển rẽ nhánh
- Bài 12: Câu lệnh Break, Continue trong Java
- Bài 13: Lớp và đối tượng
- Bài 14: Tính chất của lập trình hướng đối tượng trong Java
- Bài 15: Abstract class và Interface trong Java
- Bài 16: Từ khóa super và this trong Java
- Bài 17: Từ khóa static và final trong Java
- Bài 18: Mảng (Array) trong Java
- Bài 19: Package trong Java
- Bài 21: String trong Java
- Bài 22: StringBuffer và StringBuilder
- Bài 23: Tổng quan về File và I/O
- Bài 24: Xử lý nhập xuất bằng Byte Stream và Character Stream
- Bài 25: Thao tác với tệp và thư mục trong Java
- Bài 26: Tổng quan về Collection trong Java
- Bài 27: Những Interface phổ biến trong Java Collection Framework
- Bài 28: Những Class được triển khai dựa trên Interface của Java Collection
- Bài 29: Khái niệm xử lý ngoại lệ trong Java
- Bài 30: Hướng dẫn xử lý ngoại lệ trong Java
- Bài 31: Đa luồng trong Java
- Bài 32: Thread synchronization trong Java
- Bài 33: Tổng quan về Java AWT
- Bài 34: Container trong Java AWT
- Bài 35: Component trong Java AWT
- Bài 36: Layout Manager trong Java AWT
- Bài 37: Xử lý sự kiện trong Java AWT
- Bài 38: Tổng quan về Java Swing
- Bài 39: Container trong Java Swing
- Bài 40: Component trong Java Swing
- Bài 41: Layout trong Java Swing
- Bài 42: Event trong Java Swing
- Bài 43: Menu trong Java Swing
- Bài 44: Kết nối cơ sở dữ liệu với thư viện JDBC trong Java
Bài 16: Từ khóa super và this trong Java - Lập trình Java cơ bản
Đăng bởi: Admin | Lượt xem: 4657 | Chuyên mục: Java
1. Từ khóa super
Từ khóa super trong java là một biến tham chiếu được sử dụng để tham chiếu trực tiếp đến đối tượng của lớp cha gần nhất. Bất cứ khi nào bạn tạo ra instance (thể hiện) của lớp con, một instance của lớp cha được tạo ra ngầm định, nghĩa là được tham chiếu bởi biến super.Từ khóa super có 3 cách sử dụng sau:
- Gọi trực tiếp hàm dựng (constructor) của lớp cha gần nhất.
- Gọi trực tiếp thuộc tính (field) của lớp cha gần nhất.
- Gọi trực tiếp phương thức (method) của lớp cha gần nhất.
Ví dụ 1: Gọi trực tiếp constructor của lớp cha gần nhất
public class People{
public People() {
System.out.println("This is people");
print();
}
}
public class Employee extends People{
public Employee() {
System.out.println("This is employee");
}
}
public class Main {
public static void main(String args[]) {
Employee e = new Employee();
}
}
Kết quả thu đươc:
This is people
This is employee
Ví dụ 2: Gọi trực tiếp thuộc tính (field) của lớp cha gần nhất
package com.company;
public class People{
String name = "Huy Nguyen";
}
package com.company;
public class Employee extends People {
void printName(){
System.out.println(super.name);
}
}
package com.company;
public class Main {
public static void main(String args[]) {
Employee e = new Employee();
e.printName();
}
}
Kết quả thu được:
Huy Nguyen
Ở trường hợp thứ 3, cũng tương tự như trường hợp thứ 2, ta sẽ gọi phương thức của lớp cha gần nhất thông qua từ khóa super.
2. Từ khóa this
Từ khóa this trong java là một biến tham chiếu được sử dụng để tham chiếu tới đối tượng của lớp hiện tại.Từ khóa this có 6 cách sử dụng sau:
- Tham chiếu tới biến instance của lớp hiện tại.
- Gọi phương thức (method) của lớp hiện tại.
- Gọi hàm dựng (constructor) của lớp hiện tại.
- Trả về instance của lớp hiện tại
- Được truyền như một tham số trong phương thức (method).
- Được truyền như một tham số trong hàm dựng (constructor).
Ví dụ 1: Tham chiếu tới biến instance của lớp hiện tại
public class Student {
int id;
String name;
public Student(int id, String name) {
this.id = id;
this.name = name;
}
void display() {
System.out.println(id + " " + name);
}
public static void main(String args[]) {
Student s1 = new Student(1, "Huy");
Student s2 = new Student(2, "Nguyen");
s1.display();
s2.display();
}
}
Kết quả thu được:
Huy
Nguyen
Ví dụ 2: Gọi phương thức của lớp hiện tại
public class Example{
void print() {
System.out.println("Example");
}
public static void main(String args[]) {
this.print();
}
}
Kết quả thu được:
Example
Nếu trong trường hợp không sử dụng từ khóa this, trình biên dịch sẽ tự động thêm từ khóa this khi biên dịch.
Ví dụ 3: Gọi hàm dựng của lớp hiện tại
Phương thức this() có thể được sử dụng để gọi Constructor của lớp hiện tại. Cách sử dụng này sẽ hữu dụng hơn nếu bạn có nhiều Constructor trong một lớp và bạn muốn sử dụng lại Constructor.
public class Employee {
int id;
String name;
Employee() {
System.out.println("Constructor mặc định");
}
Employee(int id, String name) {
this(); // gọi constructor của lớp hiện tại
this.id = id;
this.name = name;
}
void display() {
System.out.println(id + " " + name);
}
public static void main(String args[]) {
Employee e1 = new Employee(1, "Huy");
Employee e2 = new Employee(2, "Nguyen");
e1.display();
e2.display();
}
}
Constructor mặc định
Constructor mặc định
1 Huy
2 Nguyen
Ví dụ 4: Trả về instance của lớp hiên tại
Chúng ta có thể trả về instance của lớp hiện tại bằng cách sử dụng từ khóa this. Trong trường hợp này, kiểu trả về của phương thức phải là kiểu class (không là kiểu nguyên thủy).
package com.company;
class Example{
void getID(){
System.out.println(this);
}
}
public class Main {
public static void main(String args[]) {
Example e = new Example();
e.getID();
}
}
com.company.Example@6acbcfc0
Ví dụ 5: Được truyền như một tham số trong phương thức
Từ khóa this có thể được dùng như một tham số trong phương thức. Cách dùng này chủ yếu được sử dụng trong sử lý sự kiện.
package com.company;
class Example{
void getID(Example example){
System.out.println("Example");
}
void print(){
getID(this);
}
}
public class Main {
public static void main(String args[]) {
Example e = new Example();
e.print();
}
}
Example
Ví dụ 6: Được truyền như một tham số trong hàm dựng
Bạn cũng có thể truyền từ khóa this trong Constructor. Tính năng này rất hữu ích nếu chúng ta phải sử dụng một đối tượng trong nhiều lớp.
package com.company;
class Example{
Example2 obj;
Example(Example2 obj) {
this.obj=obj;
}
void display() {
System.out.println(obj.number);// sử dụng biến thành viên cửa lớp A4
}
}
class Example2 {
String number = "Example";
Example2() {
Example b = new Example(this);
b.display();
}
}
public class Main {
public static void main(String args[]) {
Example2 e = new Example2();
}
}
Example
Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!
- Bài 1: Tổng quan ngôn ngữ Java
- Bài 2: Hướng dẫn cài đặt và cấu hình Java
- Bài 3: Hướng dẫn cài đặt và cấu hình Intellij IDEA trên Window
- Bài 4: Tạo Project và làm quen với Intelij IDEA
- Bài 5: Cú pháp và quy tắc cơ bản trong Java
- Bài 6: Các kiểu dữ liệu trong Java
- Bài 7: Các kiểu biến trong Java
- Bài 8: Toán tử trong Java
- Bài 9: Hệ thống Unicode trong Java
- Bài 10: Các kiểu vòng lặp
- Bài 11: Câu lệnh điều khiển rẽ nhánh
- Bài 12: Câu lệnh Break, Continue trong Java
- Bài 13: Lớp và đối tượng
- Bài 14: Tính chất của lập trình hướng đối tượng trong Java
- Bài 15: Abstract class và Interface trong Java
- Bài 16: Từ khóa super và this trong Java
- Bài 17: Từ khóa static và final trong Java
- Bài 18: Mảng (Array) trong Java
- Bài 19: Package trong Java
- Bài 21: String trong Java
- Bài 22: StringBuffer và StringBuilder
- Bài 23: Tổng quan về File và I/O
- Bài 24: Xử lý nhập xuất bằng Byte Stream và Character Stream
- Bài 25: Thao tác với tệp và thư mục trong Java
- Bài 26: Tổng quan về Collection trong Java
- Bài 27: Những Interface phổ biến trong Java Collection Framework
- Bài 28: Những Class được triển khai dựa trên Interface của Java Collection
- Bài 29: Khái niệm xử lý ngoại lệ trong Java
- Bài 30: Hướng dẫn xử lý ngoại lệ trong Java
- Bài 31: Đa luồng trong Java
- Bài 32: Thread synchronization trong Java
- Bài 33: Tổng quan về Java AWT
- Bài 34: Container trong Java AWT
- Bài 35: Component trong Java AWT
- Bài 36: Layout Manager trong Java AWT
- Bài 37: Xử lý sự kiện trong Java AWT
- Bài 38: Tổng quan về Java Swing
- Bài 39: Container trong Java Swing
- Bài 40: Component trong Java Swing
- Bài 41: Layout trong Java Swing
- Bài 42: Event trong Java Swing
- Bài 43: Menu trong Java Swing
- Bài 44: Kết nối cơ sở dữ liệu với thư viện JDBC trong Java