자바에서의 슈퍼 용법 분석 분석

3462 단어 javasuper
어제this용법총결을 썼을 때 갑자기 문제가 생겼어요. 다른 사람에게 가르침을 청한 후에 자신의 약간의 인식이 생겼어요.아니면 그것을 써서 모두에게 더 좋은 인식을 제공할 것인가.1) 어떤 사람이 속성을 초기화하는 좋은 구조 함수를 썼는데, 그 안에 다른 자신의 새로운 속성의 초기화를 추가하고 싶을 뿐이다. 이렇게 하면 한 구조 함수에서 다른 구조 함수를 호출하면 중복된 코드 양을 피하고 작업량을 줄일 수 있다.2) 한 구조 함수에서 다른 구조 함수를 호출할 때 같은 메모리 공간을 사용해야 한다. 기본 구조 함수에서 먼저 변수를 초기화하고 다른 구조 함수를 호출할 때 이미 초기화된 변수의 값을 덮어쓴다.3) 전체 호출의 과정은 귀환 호출 함수와 약간 유사하다. 공기구를 계속 충전하고 전체 기구가 팽창할 때까지 깊은 층으로 전진하며 정지 표시를 만나 층층이 튀어나온다.단락 코드를 써서 나의 위의 서술을 설명했다

class JavanTiger {
     int age;      //
     int hight;    //

     public JavanTiger() {
         print();
         this.age=2;   // age , ,
     }

     public JavanTiger(int age) {
         this();      // ,
         this.age = age;
         print();
     }

     public JavanTiger(int age, int hight) {
         this(age);   //   ,
         this.hight = hight;
         print();
     }

     public void print() {  //
         System.out.println("I'am a " + age + " " + hight + " tiger!");
     }
     public static void main(String[] args) {
         new JavanTiger(3,3);
     }
 }
 //output
 //I'am a 0 0 tiger!
 //I'am a 3 0 tiger!
 //I'am a 3 3 tiger!
개인의 이해는 이렇다. 예를 들어 구조 함수 귀속 호출과 프로그램 함수 귀속 호출의 메커니즘이 같은 것 같습니까?구조 함수는 대상과 함께 생성된다. 즉, 메모리 공간을 동시에 분배하는 것이다. 그 문과 같은 귀속 호출은 메모리 분배의 순서를 어지럽히지 않을까?보이는 큰 소들이 판자를 두드려 가장 좋은 설명을 해 주기를 바란다.오늘 요약하고자 하는 것은 슈퍼라는 키워드의 사용이다. 슈퍼가 구조 함수에 나타날 때 일반적으로 현재 이 클래스는 다른 클래스를 계승한다. 슈퍼의 출현은 바로 부류의 구조 함수를 호출하기 위해 코드를 붙이는 것이다

class Tiger {
     int age; //
     int hight; //

     public Tiger() {
         print();
     }

     public void print() {
         System.out.println("I'am a " + age + " " + hight + " tiger!");
     }
 }
 public class JavanTiger extends Tiger {   
     public JavanTiger() {
         super();    //
     }
     public static void main(String[] args) {
         new JavanTiger();
     }
 }
사실 클래스 Javantiger의 구조 함수에 있는 슈퍼()는 쓰지 않아도 됩니다. JAVA는 기본적으로 부류의 무파라미터 구조 함수를 호출합니다. 그러나 부류가 무파라미터의 구조 함수를 정의하지 않고 문법 오류가 없으면 프로그램이 자동으로 종료됩니다. 어떤 인쇄문도 없습니다. 이때 다른 부류의 구조 함수를 수동으로 호출해야 합니다. 코드 붙이기:

class Tiger {
     int age; //
     int hight; //

     public Tiger(int age) {
     this.age = age;
     print();
     }
     public void print() {
         System.out.println("I'am a " + age + " " + hight + " tiger!");
     }
 }
 public class JavanTiger extends Tiger {   
     public JavanTiger() {
         super(1);    //
     }
     public static void main(String[] args) {
         new JavanTiger();
     }
 }
이 코드의 슈퍼(1)는 반드시 써야 합니다. 그렇지 않으면 컴파일러가 오류를 보고할 것입니다.그래서 간단하게 정리해 봤는데,"this () 는 자신의 다른 구조 함수를 호출하고, 슈퍼 () 는 자신이 계승한 부류를 호출하는 구조 함수입니다."기본적으로 매개 변수가 없는 부류 구조 함수만 호출하려면 하위 클래스의 구조 함수에 쓰지 않아도 되지만 실제 프로그래밍을 할 때 이 점을 무시합니다. 이 두 키워드가 하위 클래스의 구조 함수에 동시에 나타날 수 있습니까? 답은 틀림없습니다. 먼저 자신의 이해를 말씀드리겠습니다. 1) 기본 클래스를 새로 만들 때 자신의 구조 함수를 몇 번 호출하든 최종적으로너는 모두 부류의 구조 함수를 호출할 것이다. (현식 호출이 아니라면, 시스템은 기본적으로 파라미터가 없는 부류 구조 함수를 호출할 것이다.)2) JAVA에서this와 super를 사용할 때 반드시 구조 함수 첫 줄에 놓아야 하며 첫 줄만 있어야 한다.

좋은 웹페이지 즐겨찾기