이 기사에서는 Java 객체 지향 프로그래밍의 상속에 대해 설명합니다. 다음과 같이 참조에 대해 공유하십시오.
상속 : 특별 계급에는 일반 계급의 모든 속성과 행동이 있습니다.
상속 혜택 :
1. 코드 재사용성 향상
2. 수업이 이전에 수업과 관계를 맺게 하고이 관계와 만 다형성 특성이있을 수 있습니다. 상속은 수업과 수업의 관계입니다.
참고 :
1. 자바는 다중 상속이 아닌 단일 상속 만 지원합니다. 다중 상속은 보안 위험이 있기 때문에 : 여러 상위 클래스가 동일한 함수를 정의하지만 함수가 다를 때 하위 클래스는 어느 것이 실행될 지 알지 못합니다.
2. 어린이 계급이 상위 클래스를 상속 받으면 부모 클래스의 모든 방법과 속성을 물려 받고 직접 사용할 수 있습니다.
3. Java는 다층 상속, 즉 손자-아버지 사이의 관계를 지원합니다.
문법:
[Class Modifier] 클래스 서브 클래스 이름 확장 부모 클래스 이름 {문;}예를 들어:
클래스 Pserson {int Age; 문자열 이름; public void speak () {System.out.println ( "Hello World!"); }} // Person 클래스를 상속 받고 부모 클래스 학생의 모든 방법과 속성을 상속받습니다. 학생 확장 Pserson {public void study () {System.out.println ( "좋은 연구!"); }} // Person 클래스를 상속 받고 부모 클래스 작업자의 모든 방법과 속성을 상속받습니다. Pserson {public void Work () {System.out.println ( "Good Work!"); }}상속 시스템에서 기능을 사용하는 방법 (API 문서 참조) :
부모 클래스의 함수를 확인하고 기능을 사용할 서브 클래스 객체를 만듭니다.
이 세 가지 시나리오는 상속 과정에서 종종 발생합니다.
1) 같은 이름의 변수
1. 서브 클래스에 동일한 이름의 비 개인적인 멤버 변수가있는 경우 서브 클래스는이 클래스의 변수에 액세스하고이를 사용합니다. 서브 클래스는 상위 클래스에서 동일한 이름의 변수에 액세스하고 Super를 사용합니다.
2. 이것은이 클래스의 대상에 대한 참조를 나타냅니다.
3. Super는 부모 클래스 객체에 대한 참조를 나타냅니다 (사용량은 이와 동일합니다).
2) 같은 이름의 기능
1. 서브 클래스가 부모 클래스와 정확히 동일한 함수 (함수 이름과 매개 변수가 동일 함)가 나타나면 서브 클래스 객체가 함수를 호출하면 서브 클래스 함수 컨텐츠가 실행됩니다. , 부모 클래스의 기능은 덮어 쓰기 (다시 쓰기라고도 함).
2. 정의를 다시 작성하십시오 : 서브 클래스가 상위 클래스를 상속받을 때 부모 클래스의 함수를 따르고 서브 클래스에 들어갑니다. 그러나 서브 클래스에는이 기능이 있지만 함수의 내용은 상위 클래스와 일치하지 않습니다. 현재 새 함수를 정의 할 필요는 없지만 재정의 기능을 사용하고 부모 클래스의 함수 정의를 유지하며 기능 컨텐츠를 다시 작성하십시오.
3. 다시 쓰기에 대한 메모 (오버 라이팅) :
<1> 서브 클래스는 상위 클래스를 무시합니다. 아동 클래스의 권한이 상속 전 부모 클래스의 권한보다 크거나 동일하도록해야합니다. 그렇지 않으면 편집이 실패합니다. (공개> 수사적 키워드를 쓰지 마십시오> 개인)
<2> 정적은 정적 만 커버 할 수 있습니다
<3> 오버로드 : 동일한 이름 및 다시 쓰는 기능의 매개 변수 목록 만 살펴보십시오. 자식 부모 클래스 메소드는 정확히 동일해야합니다 (함수 이름 및 매개 변수 목록)
클래스 fu {// public void show () 상위 클래스가 show () 인 경우 서브 클래스 함수와 정확히 동일합니다. 상위 클래스의 쇼 기능은 공개 void show (문자열 이름)를 다시 작성합니다. // 상위 클래스의 쇼 기능은 하위 클래스와 다르므로 (매개 변수 목록은 다릅니다), 상위 클래스의 표시 함수는 다시 작성되지 않습니다 {system.out.println (name); }} class zi는 fu {public void show () {System.out.println ( "zi")을 확장합니다. }} 클래스 jicheng {public static void main (String [] args) {zi z1 = new zi (); z1.show ( "nihao"); // 상위 클래스의 쇼 함수는}}}입니다.3) 생성자
1. 서브 클래스 객체를 초기화 할 때, 서브 클래스의 생성자의 첫 번째 줄은 기본적으로 암시 적 문을 가지기 때문에 부모 클래스의 생성자도 실행됩니다.
2. Super ()는 상위 클래스의 중공 매개 변수의 생성자에 액세스하고 서브 클래스의 모든 생성자의 첫 번째 줄은 기본적으로 super ()입니다.
3. 서브 클래스가 상위 클래스 생성자에 액세스 해야하는 이유
<1> 부모 클래스의 데이터 서브 클래스를 직접 얻을 수 있으므로 서브 클래스는 먼저 상위 클래스가 데이터를 초기화하는 방법을 확인하는 것입니다. 따라서 서브 클래스가 초기화되면 먼저 기본적으로 부모 클래스의 생성자에 액세스합니다.
<2> 상위 클래스 또는 상위 클래스에 빈 매개 변수가없는 생성자가 공식화 한 생성자에 액세스하려면 Super 문을 수동으로 정의하여이를 공식화 할 수 있습니다.
물론 <3> 서브 클래스 생성자의 첫 번째 줄은이 클래스의 생성자에 액세스하기 위해 수동으로 지정 될 수 있지만, 서브 클래스의 생성자 중 하나 이상이 부모 클래스의 생성자에 액세스 할 수 있습니다.
클래스 fu {문자열 이름; int 연령; fu () {system.out.println ( "hello fu");} fu (문자열 이름) {system.out.println (이름); } fu (문자열 이름, int age) {this.name = 이름; this.age = age; System.out.println ( "이름 :"+name+", age :"+age); }} class zi는 fu {//zi() {yestem.out.println("hello zi ");}를 확장합니다. super ( "zhangsan", 20); // 수동 문을 사용하여 부모 클래스의 생성자를 지정하여 부모 클래스 시스템의 비 개인 정보 정보를 얻습니다. }} 클래스 테스트 {public static void main (String [] args) {zi z1 = new Zi (); }}생성자 예외의 예 :
프로그램 결과를 작성하십시오
클래스 슈퍼 {int i = 0; 퍼블릭 슈퍼 (문자열) {i = 1; }} 클래스 데모는 Super {public demo (string s) {i = 2; } public static void main (String [] args) {demo d = new 데모 ( "예"); System.out.println (di); }} // 비어있는 매개 변수가있는 생성자가 부모 클래스에서 누락 되었기 때문에 컴파일이 실패했습니다. // 또는 서브 클래스는 슈퍼 문을 통해 호출 할 부모 클래스의 생성자를 지정해야합니다.예제를 다시 작성하고 과부하시킵니다.
클래스 데모 {int show (int a, int b) {return 0;}}다음 기능은 데모의 서브 클래스로 존재할 수 있습니다.
A.public int show (int a, int b) {return 0;} // 예, 덮어 쓰기.
B.private int show (int a, int b) {return 0;} // 아니오, 권한만으로는 충분하지 않습니다.
C.private int show (int a, long b) {return 0;} // 예, 부모 클래스와 같은 기능이 아닙니다. 과부하와 동등한 적용 범위는 없습니다.
d.public short show (int a, int b) {return 0;} // no,이 함수는 주어진 함수와 동일한 클래스 또는 자식 부모 클래스에 나타날 수 없기 때문입니다.
e.static int show (int a, int b) {return 0;} // no, static은 정적 만 덮어 쓸 수 있습니다. <br> <br> 따라서 서브 클래스는 재 작성 및 과부하를 허용합니다.
더 많은 Java 관련 컨텐츠를 위해이 사이트에 관심이있는 독자는 "Java 객체 지향 프로그래밍에 대한 소개 및 고급 튜토리얼", "Java 데이터 구조 및 알고리즘에 대한 자습서", "Java Operation Dom Node Skills 요약", "Java 파일 및 디렉토리 운영 기술 요약"및 "Java Cache Cache 운영 기술 요약"을 볼 수 있습니다.
이 기사가 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.