자바 에서 슈퍼 키워드 상세 설명
그것 의 사용 장면 은 다음 과 같다.⭐(계승 하에 슈퍼 를 사용 할 수 있 습 니 다)
슈퍼 호출 (부류) 구조 방법
다음 코드 보 세 요.
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 는 본 클래스 를 방문 하 는 작업 입 니 다!!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
json 트 리 구조 (자바)텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.