Từ khóa SUPER trong JAVA thật ĐƠN GIẢN

Ngày đăng: 03/06/2020   -    Cập nhật: 14/04/2021
Chào bạn, khi lập trình Java hướng đối tượng có một từ khóa rất thú vị đó là từ khóa super.


Từ khóa Super trong Java

Từ khóa Super trong Java


Vậy từ khóa super trong Java có tác dụng gì? Sử dụng thế nào? bla... bla... Hãy cùng mình tìm hiểu trong bài viết này nhé.


Nội dung của bài viết này gồm:



  • Từ khóa super trong Java là gì?
  • Ví dụ cách sử dụng từ khóa super trong java
  • Khi nào nên sử dụng từ khóa super trong java


1. Từ khóa super trong java là gì?



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 một thể hiện (hay còn gọi là một instance) 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.


Trước khi chúng ta đi vào các ví dụ và cách sử dụng super, bạn cần có kiến thức về kế thừa ở trong Java để hiểu được các ví dụ nhé.



> Bạn có thể tìm hiểu qua bài hướng dẫn Tự học Java này nhé


2. Cách sử dụng từ khóa super trong Java qua các ví dụ



Trong java, super có 3 cách sử dụng chính:


  • Sử dụng từ khóa super để tham chiếu trực tiếp đến biến instance của lớp cha gần nhất
  • Sử dụng từ khóa super để gọi đến phương thức của lớp cha gần nhất
  • Sử dụng super() để gọi trực tiếp constructor (hàm tạo) của lớp cha gần nhất


Sau đây chúng ta cùng tìm hiểu từng trường hợp qua ví dụ cụ thể nhé.


2.1. Ví dụ sử dụng từ khóa super để tham chiếu trực tiếp đến biến instance của lớp cha gần nhất



Sau đây mình sẽ tạo ra một lớp cha là Parent, sau đó tạo ra một lớp Child kế thừa (extends) lớp Parent như bên dưới đây:


Code:




// Tạo class cha Parent
class Parent {
    public String name = "Biến lớp cha";
    public String address = "Hà Nội";

    public Parent() {} //Hàm tạo hay Constructor
}
 
// Tạo class con kế thừa class Parent
class Child extends Parent{
    public String name = "Biến lớp con";

    public Child() {} //Hàm tạo hay Constructor

    public void display1() {
        // Sử dụng từ khóa super
        System.out.println("Sử dụng super gọi biến name: " + super.name);
        // Không sử dụng từ khóa super
        System.out.println("Không sử dụng super: " + name);
    }

    public void display2() {
        System.out.println("Nơi ở: " + address);

    }
}

public class SuperInJava {
    public static void main(String[] args) {
        Child child = new Child();
        child.display1();
        child.display2();
    }
}
 


Khi chạy chương trình, chúng ta nhận được kết quả như sau:



Sử dụng super gọi biến name: Biến lớp cha
Không sử dụng super: Biến lớp con
Nơi ở: Hà Nội
 


Giải thích:


Ở đoạn code trên mình khai báo 2 class đó là class Parent (lớp cha) và class Child (lớp con). Class Child kế thừa class Parent.


Trong class child có hai phương thức là display1()display2() để in ra thông tin các thuộc tính của 2 class.


Với phương thức display1(), đầu tiên mình in ra màn hình sử dụng super.name vì vậy nó sẽ gọi đến biến name của lớp cha gần nhất (ở đây là lớp Parent).


Do đó nó sẽ in ra “Biến lớp cha”.


Tương tự mình in ra màn hình chỉ sử dụng name thì nó sẽ gọi đến biến name của lớp Child.


Với display2(), trường hợp này lớp Child không có biến address giống của lớp cha, vì vậy lớp Child sẽ kế thừa luôn biến address của lớp Parent.


Do đó mình in ra biến address mà không cần sử dụng super.address cũng được.



2.2. Ví dụ sử dụng từ khóa super để gọi phương thức của lớp cha gần nhất



Để hiểu cách gọi phương thức của lớp cha gần nhất bằng cách sử dụng từ khóa super thì hãy xem ví dụ bên dưới đây:


Code:




class Parent {
    public Parent() {}

    public void printInfo() {
        System.out.println("Đây là lớp cha");
    }
}

class Child extends Parent{
    public Child() {}

    public void printInfo() {
        System.out.println("Đây là lớp con");
    }

    public void displayUseSuper() {
        // Sử dụng từ khóa super
        super.printInfo();
    }

    public void displayNotUseSuper() {
        // Không sử dụng từ khóa super
        printInfo();
    }
}

public class SuperInJava {
    public static void main(String[] args) {
        Child child = new Child();
        child.displayUseSuper();
        child.displayNotUseSuper();
    }
}
 


Khi chạy chương trình, chúng ta nhận được kết quả:



Đây là lớp cha
Đây là lớp con
 

 
Giải thích:


Ở đây ta thấy hai lớp ChildParent đều có phương thức printInfo (cùng có tên là printInfo giống nhau).


Trong lớp Child, phương thức displayUseSuper() sử dụng từ khóa super.printInfo(), vì vậy trình biên dịch sẽ hiểu là cần phải gọi đến hàm printInfo trong lớp Parent.


Tương tự phương thức displayNotUseSuper() không sử dụng từ khóa super nên nó trình biên dịch sẽ ưu tiên tìm đến phương thức được định nghĩa trong lớp con, nếu sẽ gọi.


Nếu không có, nó sẽ gọi đến phương thức trong lớp cha.


Vì thế, chúng ta có kết quả như trên.



2.3. Sử dụng super() để gọi trực tiếp constructor của lớp cha



Code:



class Parent {
    public Parent() {
        System.out.println("Hàm tạo lớp cha không tham số");
    }
}

class Child extends Parent{
    public Child() {
        // Luôn đặt hàm super() đầu tiên
        super();
        System.out.println("Hàm tạo lớp con");
    }
}

public class SuperInJava {
    public static void main(String[] args) {
        Child child = new Child();
        }
}
 


Khi chạy chương trình trên, chúng ta nhận được kết quả:


Hàm tạo lớp cha không tham số
Hàm tạo lớp con
 


Giải thích:


Bạn thấy ở trong constructor của class Child, mình có gọi super(), . Phương thức super() là một phương thức đặc biệt của từ khóa super.



> Đọc thêm: Constructor trong Java


Việc sử dụng như trên trình biên dịch sẽ hiểu là bạn cần gọi đến contructor của lớp cha.


Lưu ý: Phương thức super() luôn phải đặt là câu lệnh đầu tiên.


Nhìn vào kết quả, mình tin là bạn sẽ hiểu ngay thôi.


Thông qua ba ví dụ về 3 trường hợp cụ thể trên, bây giờ chúng ta hãy cùng thực hành một ví dụ khác nhé. Cùng đoán xem đoạn code dưới đây sẽ chạy ra kết quả như thế nào?




class Person {  
    int id;
    String name;
    Person (int idString name){
        this.id = id;
        this.name = name;
    }
}

class Emp extends Person{
    float salary;
    Emp (int idString namefloat salary){
        //gọi lại constructor có 2 tham số là id và name của class cha
        super(id, name);
        this.salary = salary;
    }
    void display(){
        System.out.println(id + " " + name + " " + salary);
    }
}

    public class SuperInJava {
    public static void main(String[] args) {
        Emp e1 = new Emp(1"ankit"45000f);  
        e1.display();
    }
}
 


Bạn hãy thử chạy chương trình trong Eclipse IDE (hoặc IDE nào khác) để xem kết quả như thế nào nhé.




3. Khi nào nên sử dụng từ khóa super trong Java?



Qua phần kiến thức và ví dụ mình đã trình bày ở trên, chúng ta có thể rút ra được một số trường hợp nên sử dụng super như sau:


  • Sử dụng từ khóa super khi cần truy xuất đến thuộc tính của lớp cha gần nhất. Nó được sử dụng nếu lớp cha và lớp con có cùng tên thuộc tính.
  • Sử dụng từ khóa super khi cần truy xuất đến phương thức của lớp cha gần nhất. Nó nên được sử dụng nếu lớp con chứa cùng phương thức với lớp cha. Nói cách khác, nó được sử dụng nếu phương thức bị override (ghi đè).
  • Sử dụng từ khóa super khi cần gọi đến constructor của lớp cha gần nhất.


Bạn đã hiểu từ về khóa super trong Java chưa?



Như vậy thông qua bài viết này, mình đã trình bày cho các bạn các kiến thức về từ khóa super trong Java rồi.


Học Java cũng không quá khó phải không nào? Quan trọng là bạn biết chia nhỏ ra từng phần để học và kiên trì mỗi ngày là sẽ ổn thôi.



> Nếu muốn học có sự hướng dẫn của giảng viên doanh nghiệp. Bạn có thể tham gia KHÓA HỌC JAVA (full stack) để tăng tốc độ học tập và đi làm sớm hơn bạn nhé.


Hẹn gặp lại bạn trong bài viết tiếp theo.




---
HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Học Lập trình chất lượng cao (Since 2002). Học thực tế + Tuyển dụng ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0383.180086
Email: hello@niithanoi.edu.vn
Website: https://niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
 
#niit #niithanoi #icthanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #java #php #python
Bình luận Facebook
Mục lục
Đăng ký tư vấn
Nhân viên gọi điện tư vấn miễn phí sau khi đăng ký
Được cập nhật các ưu đãi sớm nhất
Hotline: 0383180086
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Hãy đăng ký để nhận những thông tin mới nhất về học bổng mới nhất tại NIIT - ICT Hà Nội
top
Đóng lại Đăng ký học tại NIIT - ICT Hà Nội
6260+ học viên đã theo học tại NIIT - ICT Hà Nội và có việc làm tốt trong ngành lập trình. Nắm lấy cơ hội ngay hôm nay!
Chọn khóa học
  • KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS
  • KHÓA HỌC LẬP TRÌNH PHP WEB
  • Khóa học PHP Full stack [2023] cho người mới bắt đầu
  • Khóa học BIG DATA với Hadoop và Spark
  • Khóa học Lập trình Android tại Hà Nội
  • [Tuyển sinh 2023] Lập trình viên Quốc tế DigiNxt
  • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại Hà Nội
  • LẬP TRÌNH GAME
    • Khóa học Lập trình Game Unity
  • LẬP TRÌNH WEB FRONT END
    • KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG
    • KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)
  • LẬP TRÌNH WEB BACK END
    • LẬP TRÌNH JAVA WEB VỚI FRAME WORK
    • Lập trình Web với Django
    • Lập trình PHP với Laravel Framework
  • CHƯƠNG TRÌNH ĐÀO TẠO ỨNG DỤNG CÔNG NGHỆ
    • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại TP HCM
  • LẬP TRÌNH WEB FULL STACK
    • Khóa học Java Full stack (IJFD)
  • LẬP TRÌNH MOBILE
    • FRONT-END VỚI REACTJS VÀ REACT NATIVE
    • Lập trình Android Nâng cao
  • ĐÀO TẠO CHO DOANH NGHIỆP
    • KHÓA HỌC BUSINESS ANALYSIC TỪ CƠ BẢN ĐẾN NÂNG CAO 2023
    • Khóa học Magento: Làm chủ CMS TMĐT lớn nhất
    • Khóa học IOT: Xây dựng Sản phẩm IOT với Raspberry Pi
    • Khóa học Automation Testing Chuyên nghiệp
  • KHÓA HỌC DỰ ÁN
    • Học sử dụng bộ Office: Word, Excel, Power Point, Mail chuyên nghiệp
  • KHÓA HỌC KHÁC
    • VBA Excel Toàn Tập (Cơ Bản - Nâng Cao)
    • VBA Excel Nâng cao
    • Khóa học JMeter: Performance Testing
    • Khóa học Tester đạt chuẩn Quốc tế ISTQB Foundation Level
    • Khoá Học Tester đạt chuẩn quốc tế ISTQB Advanced Level
Bạn chưa chọn khóa học cần đăng ký
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Đăng ký học thành công!
Cảm ơn bạn đã đăng ký học tại NIIT - ICT HÀ NỘI!