자바 에서 슈퍼 키워드 상세 설명

자바 의 기초 학습 에서 많은 낯 선 키 워드 를 천천히 접 하 게 되 었 습 니 다. 오늘 제 가 아 는 슈퍼 키 워드 를 말씀 드 리 겠 습 니 다.
그것 의 사용 장면 은 다음 과 같다.⭐(계승 하에 슈퍼 를 사용 할 수 있 습 니 다)
슈퍼 호출 (부류) 구조 방법
다음 코드 보 세 요.
class Person{
    public Person(){
        System.out.println("1.Person类的构造方法");
    }
}

class Student extends Person{
    public Student(){
        super();  //可写可不写,不写系统会自动在子类无参构造前加上super();表示先调用父类的无参构造;
        System.out.println("2.Student类的构造方法");
    }
}

public class Day6{
    public static void main(String[] args){
        Student stu = new Student();
    }
}

인쇄 결 과 는 1. Person 류 의 구조 방법 2. Student 류 의 구조 방법
주의:
1. 부계 에 무 참 구조 가 존재 할 때 부계 무 참 구 조 를 호출 할 때 시스템 은 자동 으로 부계 무 참 구조 앞 에 슈퍼 () 를 붙 여 부계 의 무 참 구 조 를 먼저 호출 하 는 것 을 나타 낸다.슈퍼 문 구 는 생략 할 수 있 습 니 다. 이때 하위 클래스 는 this 호출 구조 방법 을 사용 할 수 있 습 니 다.
2. 부모 류 에 무 참 구조 가 존재 하지 않 을 때 (부모 류 의 무 참 구조 방법 이 하나 도 없다 는 것 을 말한다) 반드시 하위 구조 방법 에서 슈퍼 (매개 변수) 를 사용 해 야 한다.부 류 를 호출 하 는 어떤 파 라 메 트릭 구 조 를 명 확 히 지정 합 니 다.이때 슈퍼 문 구 는 생략 할 수 없습니다.⭐그리고 이때 하위 클래스 에는 this 호출 구조 방법 이 존재 하지 않 습 니 다.
다음 코드 를 보십시오.
class Person{
    private String name;
    private int age;
    public Person(String name){
        this.name = name;
    }
    public Person(String name, int age){
        this(name);   //this调用构造方法必须放在第一行,这里这样写是为了避免代码重复
        this.age = age;
    }
    public Person(){
        System.out.println("1.Person类的构造方法");
    }
}

class Student extends Person{
    private String school;

    public Student(){
        super("yy");
        System.out.println("Student类的构造方法");
    }

    public Student(String school){
        this();
        //super("yy");    //对super的调用必须在构造方法的第一行
        System.out.println("2.Student类的构造方法");
    }
}

public class Day6{
    public static void main(String[] args){
        Student stu = new Student("beida");
    }
}

운영 결 과 는 다음 과 같다. Student 류 의 구조 방법 2. Student 류 의 구조 방법
이 코드 에는 부모 클래스 에 무 참 구조 방법 이 포함 되 어 있 기 때문에 하위 클래스 에서 this 키 워드 를 사용 하여 하위 클래스 의 구조 방법 을 호출 할 수 있 습 니 다. 이 때 는 슈퍼 문 구 를 줄 여야 합 니 다. this 와 충돌 하지 않도록 해 야 합 니 다. 그러나 생략 한 후에 시스템 은 여전히 추가 해 줄 것 입 니 다. 그러나 잘못 보고 하지 않 으 면 잘못 보고 할 것 입 니 다.
위의 코드 를 다음 과 같이 바 꾸 면:
class Person{
    private String name;
    private int age;
    public Person(String name){
        this.name = name;
    }
    public Person(String name, int age){
        this(name);   //this调用构造方法必须放在第一行,这里这样写是为了避免代码重复
        this.age = age;
    }
}

class Student extends Person{
    private String school;
    public Student(){
        super("yy");
        System.out.println("Student类的构造方法");
    }
    public Student(String school){
        this();
        super("yy");   
        System.out.println("2.Student类的构造方法");
    }
}

public class Day6{
    public static void main(String[] args){
        Student stu = new Student("beida");
    }
}

이 를 통 해 알 수 있 듯 이 부 류 는 구조 방법 이 없 지만 자 류 는 this 호출 구조 방법 을 사 용 했 습 니 다. 이것 은 허용 되 지 않 기 때문에 잘못 보고 할 수 있 습 니 다.
2. 슈퍼 호출 일반 방법 
슈퍼 호출 방법 이나 속성 은 모두 부모 클래스 의 방법 이나 속성 을 호출 하 는 것 을 말한다.아래 의 간단 한 응용 을 보십시오.
class Person{
    public String info = "father";
    public void print(){
        System.out.println("i am father");
    }

}
class Student extends Person{
    public Student(){
        super.print();
        System.out.println(super.info);   //不能super.父类的私有属性
    }

}
public class Exer{
    public static void main(String[] args){
        Student stu = new Student();
    }
}

출력: i am father father
 우 리 는 사실 슈퍼 의 사용 방법 과 this 키 워드 는 매우 비슷 한 점 이 있 지만 가장 큰 차이 점 은 슈퍼 가 부모 클래스 를 방문 하 는 작업 이 고 this 는 본 클래스 를 방문 하 는 작업 입 니 다!!

좋은 웹페이지 즐겨찾기