[java] Java에서 super ()

되어 super()부모 생성자를 호출하는 데 사용? 설명하십시오 super().



답변

super() 인수없이 부모 생성자를 호출합니다.

인수와 함께 사용할 수도 있습니다. 즉 super(argument1), 유형의 매개 변수 1을 허용하는 생성자를 호출합니다.argument1 (있는 경우) .

또한 부모로부터 메소드를 호출하는 데 사용될 수 있습니다. 즉super.aMethod()

더 많은 정보와 튜토리얼은 여기


답변

몇 가지 사실 :

  1. super() 직계 부모를 호출하는 데 사용됩니다.
  2. super() 인스턴스 멤버, 즉 인스턴스 변수 및 인스턴스 메소드와 함께 사용할 수 있습니다.
  3. super() 생성자 내에서 사용하여 부모 클래스의 생성자를 호출 할 수 있습니다.

자, 이제이 지점을 실제로 구현해 봅시다 super().

프로그램 1과 2의 차이점을 확인하십시오. 여기서, 프로그램 2 super()는 Java에서 첫 번째 진술을 증명합니다 .

프로그램 1

class Base
{
    int a = 100;
}

class Sup1 extends Base
{
    int a = 200;
    void Show()
    {
        System.out.println(a);
        System.out.println(a);
    }
    public static void main(String[] args)
    {
        new Sup1().Show();
    }
}

산출:

(200)
(200)

이제 프로그램 2를 확인하고 주요 차이점을 찾아보십시오.

프로그램 2

class Base
{
    int a = 100;
}

class Sup2 extends Base
{
    int a = 200;
    void Show()
    {
        System.out.println(super.a);
        System.out.println(a);
    }
    public static void main(String[] args)
    {
        new Sup2().Show();
    }
}

산출:

(100)
(200)

프로그램 1에서 출력은 파생 클래스에만있었습니다. 기본 클래스 나 부모 클래스의 변수를 인쇄 할 수 없습니다. 그러나 2 프로그램에, 우리가 사용한 super()변수 a의 출력을 인쇄하고, 대신에 변수의 값을 인쇄 중에 a유도 된 클래스를, 그 변수의 값을 출력 a기본 클래스를. 따라서 super()직계 부모에게 전화하는 데 사용됩니다.

이제 프로그램 3과 프로그램 4의 차이점을 확인하십시오.

프로그램 3

class Base
{
    int a = 100;
    void Show()
    {
        System.out.println(a);
    }
}

class Sup3 extends Base
{
    int a = 200;
    void Show()
    {
        System.out.println(a);
    }
    public static void Main(String[] args)
    {
        new Sup3().Show();
    }
}

산출:

200

여기서 출력은 200입니다. 호출 할 때 파생 클래스 Show()Show()함수가 호출되었습니다. 그러나 Show()부모 클래스 의 함수 를 호출하려면 어떻게해야 합니까? 해결책은 프로그램 4를 확인하십시오.

프로그램 4

class Base
{
    int a = 100;
    void Show()
    {
        System.out.println(a);
    }
}

class Sup4 extends Base
{
    int a = 200;
    void Show()
    {
        super.Show();
        System.out.println(a);
    }
    public static void Main(String[] args)
    {
        new Sup4().Show();
    }
}

산출:

(100)
(200)

여기서 우리는 두 개의 출력, 100 및 200을하면 점점 Show()파생 클래스의 함수가 호출, 그것은 먼저 호출 Show()때문에 내부, 부모 클래스의 기능을 Show()파생 클래스의 기능을, 우리는라고 Show()바꾸어 부모 클래스의 기능을 super함수 이름 앞 의 키워드


답변

소스 기사 : Java : super () 호출


예. super(...)수퍼 클래스의 생성자를 호출합니다.

삽화:

여기에 이미지 설명을 입력하십시오

독립형 예 :

class Animal {
    public Animal(String arg) {
        System.out.println("Constructing an animal: " + arg);
    }
}

class Dog extends Animal {
    public Dog() {
        super("From Dog constructor");
        System.out.println("Constructing a dog.");
    }
}

public class Test {
    public static void main(String[] a) {
        new Dog();
    }
}

인쇄물:

Constructing an animal: From Dog constructor
Constructing a dog.


답변

부모 생성자를 호출하는 데 super ()가 사용됩니까?

예.

Pls는 Super ()에 대해 설명합니다.

super()super매개 변수없는 부모 생성자를 호출하는 키워드 의 특별한 사용입니다 . 일반적으로 super키워드는 재정의 된 메서드를 호출하거나 숨겨진 필드에 액세스하거나 수퍼 클래스의 생성자를 호출하는 데 사용할 수 있습니다.

공식 튜토리얼 은 다음과 같습니다.


답변

인수가없는 수퍼 생성자를 호출하면 화면 공간과 프로그래머 시간이 낭비됩니다. 컴파일러는 작성 여부에 관계없이 정확히 동일한 코드를 생성합니다.

class Explicit() {
    Explicit() {
        super();
    }
}

class Implicit {
    Implicit() {
    }
}


답변

예, super()(소문자)는 부모 클래스의 생성자를 호출합니다. 인수를 포함 할 수 있습니다.super(foo, bar)

super메소드에서 슈퍼 클래스의 메소드를 호출하는 데 사용할 수 있는 키워드 도 있습니다.

에서 “자바 슈퍼”결과에 대한 빠른 구글


답변

맞아요. Super는 부모 생성자를 호출하는 데 사용됩니다. 따라서 이와 같은 코드 블록이 있다고 가정하십시오.

class A{
    int n;
    public A(int x){
        n = x;
    }
}

class B extends A{
    int m;
    public B(int x, int y){
        super(x);
        m = y;
    }
}

그런 다음 멤버 변수 n에 값을 할당 할 수 있습니다.