Java에서의 상속과 조합 분석

앞말
Java는 객체를 위한 언어입니다.자바를 배운 모든 사람들은 봉인, 계승, 다태가 대상을 향한 세 가지 특징이라는 것을 안다.모든 사람들이 상속을 막 배웠을 때 많든 적든 이런 인상을 가지고 있다. 상속은 내가 유형의 복용을 실현하는 데 도움을 줄 수 있다.그래서 많은 개발자들이 코드를 복용해야 할 때 자연스럽게 클래스의 계승 방식을 사용한다. 왜냐하면 책에 이렇게 쓰여 있기 때문이다.그러나 사실 이렇게 하는 것은 옳지 않다.장기적으로 대량의 사용 계승은 코드에 높은 유지 보수 비용을 가져올 것이다.
사실 저는 자바를 처음 배웠을 때 그룹이라는 명사를 들어본 적이 없어요. 선생님도 설명을 안 해주셨어요. 저는 제가 어떤 지식을 잃어버렸다고 생각했어요. 사실은 아니에요. 그룹이라는 명사는 잠시 사유적인 것으로 정의합시다. 독자들이 모두 접했지만 그 이름이 또 있는지 몰랐어요.
사실 이른바 조합이란 이미 만들어지고 디버깅된 클래스를 호출하기 위해 새로운 클래스를 만드는 것이다. 그러면 이 클래스는 그것을 하나의 조합이라고 할 수 있다
예를 들어 People 만들기

public class People {
 private String name;
 private int age;
 
 public void setName(String name){
 this.name = name;
 }
 public String getName(){
 return this.name;
 }
 public int getAge(){
 return this.age;
 }
 public void setAge(int age){
 this.age = age;
 }
}
그러면 저는 지금 이 클래스를 사용할 것입니다. 저는 이 클래스에 새로운 특성을 추가할 수 있습니다. 이때 우리는 새로운 클래스를 만들고 이 클래스에서People의 대상을 만들 수 있습니다.
예를 들면 제가 지금 Student라는 클래스를 만들었어요.

class Student {
 People people = new People();
}
그리고 이 클래스에 속성을 추가할 수 있습니다. 예를 들어 신분을 학생으로 정의하면 여기서 논술하지 않겠습니다.
다음은 계승을 보자. 사실 계승과 조합은 본래 이곡동공의 묘미가 있다. 먼저 어떻게 계승하는지 보자.
자바에는 extends라는 키워드가 있습니다. 이것은 우리가 계승하는 것을 도울 수 있습니다. 계승된 클래스는 우리가 부류라고 할 수도 있고 기류라고 할 수도 있습니다. 초류라고 할 수도 있습니다. 계승자는 우리가 자류 또는 파생류라고 합니다.
여기서 저희가 클래스를 정의할게요.

public class Student extends People{
 //doSomething
}
이렇게 되면 이 클래스는 부류의 모든 구성원 방법과 구성원 변수를 계승하지만, 프라이빗 권한으로 성명된 필드나 방법은 계승되지 않습니다.
그걸 증명하기 위해서 저희가 학생 클래스에 쓰는 방법이 있어요.

public String re(){
 return this.name;
}
이 컴파일러는 "People.name is not visible"라는 오류를 보고합니다. 여기서 알 수 있듯이private로 성명된 필드나 방법은 계승될 수 없습니다. 계승하고 싶으면private를protected로 바꾸면 다음 필드를 순조롭게 계승할 수 있습니다.
이렇게 해서 우리는 People의 필드를 모두 초기화하고, 코드에 이 코드 블록을 추가하면 된다

{
 this.age = 10;
 this.name = "zhangsan";
}
다음은 메인 함수에서 이 학생을 설명하겠습니다.

Student student = new Student();
System.out.println(student.getAge());
현재 우리는 이 글쓰기가 가능하다는 것을 놀랍게 발견했다. 비록 하위 클래스에서 어떤 필드와 방법을 설명하지 않았지만, 우리는 여전히 getage () 를 호출할 수 있다.그리고 10을 원활하게 출력할 수 있습니다.
이것은 우리가 하위 클래스에 다시 불러오는 방법이 없기 때문에, 이 때 호출된 것은 상위 클래스의 getage이며, 상위 클래스의private 성명 필드에 쉽게 접근할 수 있습니다.
이를 보고 모두가 상속에 대해 초보적인 인식을 가지게 되었다고 믿었다. 그러면 상속 메커니즘에서 각 유형의 구조 방법은 어떻게 호출되었는가. 답은 부류에서 자류로 순서대로 호출되었다.
프레젠테이션과 동시에 저는 먼저 세 종류의 Temp1, Temp2, Temp3를 성명했습니다. 이와 동시에 Temp3는 Temp2에서 계승되었고 Temp2는 Temp1에서 계승되었습니다. 그러면 우리는 각 유형의 구조 방법에 인쇄된 문장을 넣었습니다.

//Temp1
System.out.println("i'm temp1");
//Temp2
System.out.println("i'm temp2");
//Temp3
System.out.println("i'm temp3");
저를 편리하게 하기 위해서 이렇게 썼지만, 여러분은 이것들이 각 종류의 구조 방법에 놓여 있다는 것을 절대 주의해야 합니다.
주 함수에 Temp3 객체를 만듭니다.

public class Mian{
 public static void main(String[] args){
 Temp3 temp3 = new Temp3();
 }
}
우리는 콘솔을 보고 인쇄해 냈다

i'm temp1
i'm temp2
i'm temp3
이를 통해 알 수 있듯이 먼저 temp3를 만들어야 하는 대상을 발견하고 extends 키워드를 발견한 다음에 계승 체인을 따라 위로 올라가서 temp2를 찾고 extends 키워드를 발견한 다음에 temp1을 찾은 다음에 temp1의 구조 방법을 호출하고 다음에 하나씩 호출한다.
총결산
이상은 바로 이 글의 전체 내용입니다. 본고의 내용이 여러분의 학습이나 업무에 어느 정도 도움이 되고 의문이 있으면 댓글로 교류하시기 바랍니다.

좋은 웹페이지 즐겨찾기