서브클래스 부류 중류 구성원(변수, 함수, 구조 함수)의 특징

하위 상위 클래스가 나타나면 클래스 멤버의 특성은 다음과 같습니다.
클래스의 구성원:
1. 변수
2. 함수
3. 구조 함수
1. 변수
만약 하위 클래스에 비사유적인 동명의 구성원 변수가 나타나면,
하위 클래스가 이 클래스의 변수에 접근하려면this 키워드를 사용하십시오
하위 클래스는 부모 클래스의 동명 변수에 접근하려면 슈퍼 키워드를 사용하십시오
슈퍼와this의 사용은 거의 일치한다
this는 이 유형의 대상을 대표하는 인용이다
슈퍼는 부류 대상의 인용을 대표한다
만약 하위 클래스와 하위 클래스가 같은 이름의 변수를 가지고 있다면 하위 클래스는 하위 클래스를 계승한 후 하위 클래스에서 기본적으로 자신의 변수를 사용합니다.
하위 클래스에서this이기 때문이다.num은this를 생략했습니다.부류의 변수를 사용하려면 변수 앞에 슈퍼를 붙여야 합니다
2. 함수
하위 클래스가 상위 클래스와 똑같은 함수를 나타낼 때 하위 클래스 대상이 이 함수를 호출하면 하위 클래스 함수의 내용을 상위 클래스의 함수가 덮어쓴 것처럼 실행합니다.
이런 현상은 함수의 또 다른 특성이다. 다시 쓰기 (덮어쓰기)
자류가 부류를 계승하고 부류의 기능을 자류에 답습했지만 자류는 이 기능을 갖추고 있지만 기능의 내용은 부류와 일치하지 않는다
이 경우 하위 클래스에서 새 기능을 다시 정의할 필요가 없으며 다음 코드와 같이 상위 클래스를 다시 쓰는 방법만 필요합니다.
class Fu
{
	void show
	{
		System.out.println("Fu");
	}
}
class Zi extends Fu
{
	void show
	{
		System.out.println("Zi");
	}
}
classZi의 방법show는 classFu의 show를 다시 쓴 것입니다.
주의가 필요한 항목을 덮어씁니다.
1. 하위 클래스가 상위 클래스를 덮어쓰려면 하위 클래스 권한이 상위 클래스 권한보다 크다는 것을 보증해야 덮어쓸 수 있다. 그렇지 않으면 컴파일에 실패할 수 있다.
2, 정적 덮어쓰기 정적
함수 재부팅과 재쓰기의 차이
다시 불러오기: 함수 이름의 매개 변수 목록만 보기
다시 쓰기: 하위 클래스 방법은 똑같아야 합니다
3. 자부류 중의 구조 함수
서브클래스 대상을 초기화할 때 부류의 구조 함수도 운행한다. 서브클래스 구조 함수의 첫 줄에 은식 문장 슈퍼()가 있기 때문이다.
super();부모 클래스의 빈 매개 변수의 구조 함수에 접근하고, 하위 클래스의 모든 구조 함수는 기본적으로 첫 번째 줄은 슈퍼 () 입니다.
왜 하위 클래스는 반드시 하위 클래스의 구조 함수에 접근해야 합니까
부모 클래스의 데이터 하위 클래스는 직접 얻을 수 있기 때문에 하위 클래스가 만들어질 때부모 클래스가 어떻게 이 데이터를 초기화했는지 먼저 확인해야 한다
부모 클래스에 접근하는 구조 함수는 슈퍼 문장을 수동으로 정의할 수 있습니다
주의: 슈퍼 문장은 반드시 서브클래스 구조 함수의 첫 줄에 정의해야 하며,this ()와 함께 정의할 수 없습니다.동시 출현
서브클래스 실례화 과정
결론:
하위 클래스의 모든 구조 함수는 기본적으로 부모 클래스의 빈 매개 변수의 구조 함수에 접근합니다
서브클래스 때문에 구조 함수 첫 줄에 은식 슈퍼 () 가 있습니다.문장
부류에 빈 매개 변수의 구조 함수가 없을 때, 부류는 수동으로 슈퍼 문장의 형식을 통해 부류에 접근할 구조 함수를 지정해야 한다
하위 클래스의 구조 함수 첫 줄도this 방문 질문 본 클래스의 구조 함수를 사용할 수 있습니다. 하위 클래스에 최소한 하나의 구조 함수가 상위 클래스의 구조 함수에 접근하기 때문입니다.
class  ExtendsDemo
{
	public static void main(String[] args) 
	{
		Zi z = new Zi();
	}
}
class Fu
{
	Fu()
	{
		System.out.println("Fu");
	}
}
class Zi extends Fu
{
	Zi()
	{
		// super();
		System.out.println("Zi");
	}
}

상기 코드가 실행된 후 결과는
Fu
Zi
this();및 super();왜 동시에 존재할 수 없습니까?
왜냐하면 그들은 모두 구조 함수 안의 첫 줄에만 존재할 수 있기 때문이다
왜 다 첫 줄을 써야 돼요?왜냐하면 초기화 동작을 먼저 해야 돼요.

좋은 웹페이지 즐겨찾기