상속 란 무엇입니까 (확장)?
상속은 : 새로 정의 된 클래스는 기존 클래스에서 속성과 방법을 얻는 현상입니다. 이 기존 클래스는 부모 클래스라고하며,이 부모 클래스에서 속성과 메소드를 얻는 클래스를 서브 클래스라고합니다.
ExtendSdemo1.java
코드 사본은 다음과 같습니다.
/*상속이란 무엇입니까*/
공개 클래스 확장 demo1 {
public static void main (String [] args) {
트럭 t = 새로운 트럭 ();
t.size = 100; 생성자를 사용하여 멤버 변수를 초기화하거나 set () 및 get () 인터페이스를 제공하는 것이 가장 좋습니다.
// 트럭 클래스의 인스턴스는 자동차 클래스의 크기와 색상 속성을 상속합니다.
// 어떤 트럭에 자동차보다화물 상자가 하나 더 있습니다
}
}
클래스 카 {// 자동차
int 크기; // 신체 크기
문자열; // 색상
}
클래스 트럭은 자동차 {// 트럭을 확장합니다
문자열 패킹 박스;화물 상자
}
상속의 이점
1. 코드 재사용성 향상
2. 계급 간의 관계가 다형성을위한 조건을 생성하도록하십시오.
상속 (확장) 형식
코드 사본은 다음과 같습니다.
클래스 서브 클래스는 슈퍼 클래스 {
// 진술 실행;
}
슈퍼 키워드
1. 슈퍼 키워드의 사용은 이와 동일합니다.
2. 이것은이 클래스의 참조를 나타내고 Super는 부모 클래스의 참조를 나타냅니다.
3. 같은 이름의 멤버가 서브 클래스 및 상위 클래스에 나타나면 Super와 이것을 사용하여 구별 할 수 있습니다.
Superdemo.java
코드 사본은 다음과 같습니다.
/* 슈퍼의 사용
* 출력 결과 :
* super.i = 10, this.i = 20
*/
공개 클래스 Superdemo {
public static void main (String [] args) {
새 하위 클래스 (). showMessage ();
}
}
클래스 슈퍼 클래스 {
int i = 10;
}
클래스 서브 클래스는 슈퍼 클래스 {
int i = 20;
public void showmessage () {
System.out.printf ( "super.i = %d, this.i = %d/n", super.i, this.i);
}
}
부모 클래스에서 상속 된 메소드 재정의 메소드 (오버라이드)
1. 부모 클래스와 정확히 동일한 메소드가 서브 클래스 (반환 값, 함수 이름, 공식 매개 변수)에 나타나면 재정의 작업이 발생합니다.
지나치게 과대화된다
코드 사본은 다음과 같습니다.
/* 부모 클래스에서 상속 된 메소드를 무시하는 방법 (재정의)
* 출력 결과 :
* 슈퍼 클래스 : 나는 좋다 ~
* 서브 클래스 : 나는 훌륭합니다 ~~~
*/
공개 클래스 오버 리드 메모 {
public static void main (String [] args) {
서브 클래스 sc = 새로운 서브 클래스 ();
sc.speak ();
}
}
클래스 슈퍼 클래스 {
public void speak () {
System.out.println ( "Superclass : I Am Good ~");
}
}
클래스 서브 클래스는 슈퍼 클래스 {
@override // atredge는 다음 방법이 재 작성 작업을 수행한다는 것을 의미합니다. 코드 보안이 어느 정도 증가했습니다
그리고 견고성
public void speak () {
super.speak ();
System.out.println ( "서브 클래스 : 나는 훌륭합니다 ~~~");
}
}
2. 부모 클래스 메소드를 무시할 때, 자식 클래스는 부모 클래스와 동일한 이름과 매개 변수를 가진 메소드를 허용하지 않지만 반환 유형이 다른 방법을 허용하지 않습니다.
지나치게 과대체 2.Java
코드 사본은 다음과 같습니다.
/* 이름과 매개 변수가 동일하지만 상위 클래스와 다른 리턴 유형을 가진 메소드는 서브 클래스에서 허용되지 않습니다.
* 오류 메시지 :
* OverrudredEmo.java:20 : 오류 : 서브 클래스의 F ()는 슈퍼 클래스에서 f ()를 재정의 할 수 없습니다.
* public int f () {
* ^
* 반환 유형 int는 void와 호환되지 않습니다
* Overrideemo.java:19 : 오류 : 메소드는 SuperType에서 메소드를 재정의하거나 구현하지 않습니다.
* @override
* ^
* 2 오류
*/
공개 클래스 오버 리드 메모 {
public static void main (String [] args) {
}
}
클래스 슈퍼 클래스 {
공개 void f () {
}
}
클래스 서브 클래스는 슈퍼 클래스 {
@보수
public int f () {
반환 1;
}
}
3. 서브 클래스 방법의 액세스 권한은 상위 클래스를 다시 쓰는 것이 부모 클래스에서 다시 쓰기 방법보다 크거나 동일해야합니다.
지나치게 과대화된다
코드 사본은 다음과 같습니다.
/* 서브 클래스 방법의 액세스 권한은 상위 클래스를 무시해야합니다.
* 오류 메시지 :
* OverrudredEmo.java:18 : 오류 : 서브 클래스의 F ()는 슈퍼 클래스에서 f ()를 재정의 할 수 없습니다.
* 보호 된 void f () {
* ^
* 약한 액세스 권한을 할당하려는 시도는 공개되었습니다
* 1 오류
*/
공개 클래스 오버 리드 메모 3 {
public static void main (String [] args) {
}
}
클래스 슈퍼 클래스 {
공개 void f () {
}
}
클래스 서브 클래스는 슈퍼 클래스 {
@보수
보호 된 void f () {// 여기에서 액세스 권한을 공개로 변경
}
}
액세스 컨트롤러
액세스 제어 문자는 : 공개, 보호, 기본값, 개인입니다
일부는 패키지에 대한 약간의 지식이 필요하므로 패키지에 대해 이야기 할 때 이야기하겠습니다.