예를 들어 자바 프로그래밍에서this 키워드와 슈퍼 키워드의 사용법을 설명하다
항상 클래스의 현재 대상을 대표하는 사물이 있어야 한다. C++의this 바늘과 같이 자바의this 키워드는 현재 대상을 대표하는 인용이다.
그것은 세 가지 주요 작용을 한다.
1. 구조 방법에서 다른 구조 방법을 사용한다.
예를 들어 하나의 Student 클래스가 있는데 세 개의 구조 함수가 있는데 어떤 구조 함수에서 다른 구조 함수를 호출하면this()에 사용해야 하고 Student()를 직접 사용해서는 안 된다.
2. 현재 객체의 참조를 반환합니다.
3. 구성원 변수 이름과 매개 변수 이름을 구분합니다.
다음 예제를 참조하십시오.
public class Student
{
private String name;
private int age;
private String college;
public Student()
{
age = 20;
}
public Student(String name)
{
this();//can not be call Student,only use this() method.
this.name = name;
System.out.println("this student name is "+name);
}
public Student(String name,String college)
{
this(name);//C++ Student(name)
this.college = college;
System.out.println("this student name is "+name+" college is "+college);
}
public Student upgrade()
{
age++;
return this;
}
public void print()
{
System.out.println("name is: "+name
+" age is: "+age
+" college is: "+college);
}
public static void main(String[] args)
{
Student student1 = new Student("linc");
Student student2 = new Student("linc","shenyang college");
student2.upgrade().print();
}
}
망망한 대상의 바다를 잃었을 때,this로 자신을 찾는 것을 잊지 마라.super
슈퍼는this의 아버지뻘이다.관상 대상의 측면에서 볼 때 이 두 개념은 매우 이해하기 쉽다.
자류는 부류에서 계승되고 부류의protected 및 이상의 속성과 방법은 부류에서 타고난 것이다.그럼, 왜 슈퍼라는 키워드가 있어야 합니까?
첫째, 부류의 구조를 본다
하위 클래스를 구성할 때 상위 클래스의 기본 구조 함수를 호출해야 합니다. 이것은 C++의 구조 속성과 일치합니다.부류에 여러 개의 구조 함수가 있을 때, 어떤 것을 호출할지 지정해야 합니다.이것은 슈퍼(arg1,arg2...)를 사용해야 하는 것이다.
주의해야 할 것은 하위 클래스의 구조 함수에서 기본 클래스의 구조 함수를 호출할 때 슈퍼를 맨 앞에 써야 한다. 그렇지 않으면 오류를 보고해야 한다.
둘째, 하위 클래스가 부모 클래스를 덮어쓰는 일부 방법에서 부모 클래스를 호출합니다.모두가 알다시피 하위 클래스에서 상위 클래스를 덮어쓰는 일부 방법은 대상을 대상으로 하는 다태적인 방식이다. 다른 여러 가지 이유로 이 방법에서 상위 클래스를 호출하는 이 방법을 사용해서 구분해야 한다. 이때 슈퍼를 사용해서 완성해야 한다.
public class ClassLeader extends Student
{
private String duty;
public ClassLeader()
{
duty = "class monitor";
}
public ClassLeader(String duty,String name,String college)
{
super(name,college);
this.duty = duty;
}
public void print()
{
super.print();
System.out.println("duty is " + duty);
}
public static void main(String[] args)
{
ClassLeader leader = new ClassLeader("life","linc","shenyang");
leader.print();
}
}
두 클래스 파일을 같은 디렉터리에 놓고 컴파일하고 실행합니다.
D:\workspace\Java\project261\super>javac -d . *java
D:\workspace\Java\project261\super>java ClassLeader
실행 결과:
this student name is linc
this student name is linc college is shenyang
name is: linc age is: 20 college is: shenyang
duty is life
다른 언어에서 어떻게 처리하는지 봅시다.C#에서 베이스 키워드를 제공하여 슈퍼 비슷한 기능을 완성하고 C++는 기본 클래스의 이름으로 호출합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.