logo

Java의 슈퍼 키워드

그만큼 Java의 슈퍼 키워드 객체로 작업할 때 상위 클래스를 참조하는 데 사용되는 참조 변수입니다. 의 기본을 알아야 합니다. 계승 그리고 다형성 Java super 키워드를 이해합니다.

키워드 감독자 상속이라는 개념으로 등장하게 되었습니다. 이 기사에서는 정의, 예제, 용도, 구문 등을 포함하여 Java의 super에 대한 모든 내용을 다룹니다.



내용의 테이블

Java의 Super 키워드의 특징

Java에서 super 키워드는 하위 클래스의 상위 클래스를 참조하는 데 사용됩니다. 주요 특징 중 일부는 다음과 같습니다.

  • super는 슈퍼클래스 생성자를 호출하는 데 사용됩니다. 하위 클래스가 생성되면 해당 생성자는 상위 클래스의 생성자를 호출해야 합니다. 이는 상위 클래스의 생성자를 호출하는 super() 키워드를 사용하여 수행됩니다.
  • super는 슈퍼클래스 메서드를 호출하는 데 사용됩니다. 하위 클래스는 super 키워드를 사용하여 상위 클래스에 정의된 메서드를 호출할 수 있습니다. 이는 하위 클래스가 자신의 메서드 구현 외에도 부모 클래스의 메서드 구현을 호출하려고 할 때 유용합니다.
  • super는 슈퍼클래스 필드에 액세스하는 데 사용됩니다. 하위 클래스는 super 키워드를 사용하여 상위 클래스에 정의된 필드에 액세스할 수 있습니다. 이는 하위 클래스가 상위 클래스의 필드 버전을 참조하려고 할 때 유용합니다.
  • super는 생성자의 첫 번째 문이어야 합니다. 슈퍼클래스 생성자를 호출할 때 super() 문은 서브클래스 생성자의 첫 번째 문이어야 합니다.
  • super는 정적 컨텍스트에서 사용할 수 없습니다. super 키워드는 정적 메서드나 정적 변수 이니셜라이저와 같은 정적 컨텍스트에서 사용할 수 없습니다.
  • 슈퍼클래스 메서드를 호출하는 데는 super가 필요하지 않습니다. 상위 클래스에서 메소드를 호출하기 위해 super 키워드를 사용할 수 있지만 필수는 아닙니다. 하위 클래스에서 메서드가 재정의되지 않은 경우 super 키워드 없이 해당 메서드를 호출하면 상위 클래스의 구현이 호출됩니다.

전반적으로, 슈퍼 키워드 Java에서 서브클래싱을 위한 강력한 도구로, 서브클래스가 상위 클래스의 기능을 상속하고 이를 기반으로 구축할 수 있습니다.



Java에서 super 키워드 사용

아래에 언급된 바와 같이 주로 다음과 같은 맥락에서 사용됩니다.

  • 변수와 함께 super 사용
  • 메소드와 함께 super 사용
  • 생성자와 함께 super 사용

1. 변수와 함께 super 사용

이 시나리오는 파생 클래스와 기본 클래스에 동일한 데이터 멤버가 있을 때 발생합니다. 그런 경우에는 모호할 가능성이 있다. JVM .

다음 예를 사용하면 이를 더 명확하게 이해할 수 있습니다.



자바




// super keyword in java example> > // Base class vehicle> class> Vehicle {> >int> maxSpeed =>120>;> }> > // sub class Car extending vehicle> class> Car>extends> Vehicle {> >int> maxSpeed =>180>;> > >void> display()> >{> >// print maxSpeed of base class (vehicle)> >System.out.println(>'Maximum Speed: '> >+>super>.maxSpeed);> >}> }> > // Driver Program> class> Test {> >public> static> void> main(String[] args)> >{> >Car small =>new> Car();> >small.display();> >}> }>

>

>

산출

Maximum Speed: 120>

위의 예에서 기본 클래스와 하위 클래스 모두 maxSpeed ​​멤버를 갖고 있습니다. super 키워드를 사용하여 하위 클래스에 있는 기본 클래스의 maxSpeed에 액세스할 수 있습니다.

2. 메소드와 함께 super 사용

상위 클래스를 호출할 때 사용됩니다. 방법 . 따라서 부모 클래스와 자식 클래스에 동일한 이름의 메서드가 있을 때마다 모호성을 해결하기 위해 super 키워드를 사용합니다.

이 코드 조각은 super 키워드의 사용법을 이해하는 데 도움이 됩니다.

자바




// super keyword in java example> > // superclass Person> class> Person {> >void> message()> >{> >System.out.println(>'This is person class '>);> >}> }> // Subclass Student> class> Student>extends> Person {> >void> message()> >{> >System.out.println(>'This is student class'>);> >}> >// Note that display() is> >// only in Student class> >void> display()> >{> >// will invoke or call current> >// class message() method> >message();> > >// will invoke or call parent> >// class message() method> >super>.message();> >}> }> // Driver Program> class> Test {> >public> static> void> main(String args[])> >{> >Student s =>new> Student();> > >// calling display() of Student> >s.display();> >}> }>

>

>

산출

This is student class This is person class>

위의 예에서 메소드만 호출하면 메시지() 그런 다음 현재 클래스 message()가 호출되지만 super 키워드를 사용하여 메시지() 슈퍼클래스의 호출도 가능합니다.

3. 생성자와 함께 super 사용

super 키워드를 사용하여 상위 클래스 생성자에 액세스할 수도 있습니다. 한 가지 더 중요한 점은 '슈퍼'가 상황에 따라 파라메트릭 생성자와 비파라메트릭 생성자를 모두 호출할 수 있다는 것입니다.

다음은 위의 개념을 설명하는 코드 조각입니다.

실시예 1

자바


자바 설정



// Java Code to show use of> // super keyword with constructor> > // superclass Person> class> Person {> >Person()> >{> >System.out.println(>'Person class Constructor'>);> >}> }> > // subclass Student extending the Person class> class> Student>extends> Person {> >Student()> >{> >// invoke or call parent class constructor> >super>();> > >System.out.println(>'Student class Constructor'>);> >}> }> > // Driver Program> class> Test {> >public> static> void> main(String[] args)> >{> >Student s =>new> Student();> >}> }>

>

>

산출

Person class Constructor Student class Constructor>

위의 예에서는 하위 클래스 생성자를 통해 'super' 키워드를 사용하여 슈퍼클래스 생성자를 호출했습니다.

실시예 2

자바




class> ParentClass {> >public> boolean> isTrue() {>return> true>; }> }> > class> ChildClass>extends> ParentClass {> >public> boolean> isTrue()> >{> >// calls parent implementation of isTrue()> >boolean> parentResult =>super>.isTrue();> >// negates the parent result> >return> !parentResult;> >}> }> > public> class> Main {> >public> static> void> main(String[] args)> >{> >ChildClass child =>new> ChildClass();> >// calls child implementation> >// of isTrue()> >boolean> result = child.isTrue();> > >// prints 'false'> >System.out.println(result);> >}> }>

>

>

산출

false>

Java Super 키워드 사용의 장점

그만큼 Java의 슈퍼 키워드 객체 지향 프로그래밍에서 다음과 같은 많은 이점을 제공합니다.

  • 코드 재사용 가능 : super 키워드를 사용하면 하위 클래스가 상위 클래스의 기능을 상속할 수 있으므로 코드 재사용이 촉진되고 중복이 줄어듭니다.
  • 다형성 지원 : 하위 클래스는 super를 사용하여 메서드를 재정의하고 상위 클래스의 필드에 액세스할 수 있으므로 다형성이 가능합니다. 이를 통해 보다 유연하고 확장 가능한 코드를 만들 수 있습니다.
  • 상위 클래스 동작에 대한 액세스를 제공합니다. : 하위 클래스는 super 키워드를 통해 상위 클래스에 정의된 메서드와 필드에 액세스하고 사용할 수 있습니다. 이를 통해 다시 구현하지 않고도 기존 동작을 활용할 수 있습니다.
  • 동작을 사용자 정의할 수 있습니다. 메서드를 재정의하고 super를 사용하여 상위 구현을 호출함으로써 하위 클래스는 상위 클래스의 동작을 사용자 정의하고 확장할 수 있습니다.
  • 추상화 및 캡슐화를 촉진합니다. super를 사용하면 하위 클래스가 자신의 동작에 집중하고 상위 클래스에 의존하여 하위 수준의 세부 사항을 처리할 수 있으므로 캡슐화 및 추상화가 촉진됩니다.

전반적으로 super 키워드는 계승 그리고 다형성 Java에서는 재사용 가능하고 확장 가능하며 잘 구성된 코드를 작성하려는 개발자에게 여러 가지 이점을 제공합니다.

Java Super 키워드 사용 시 기억해야 할 중요 사항

다음은 Java에서 슈퍼 키워드를 사용할 때 주의해야 할 몇 가지 중요한 사항입니다.

  • super()에 대한 호출은 Derived(Student) 클래스의 첫 번째 문이어야 합니다. 건설자 생각해 보면 슈퍼클래스가 하위 클래스에 대해 전혀 알지 못하기 때문에 슈퍼클래스가 수행해야 하는 초기화는 하위 클래스가 수행하는 초기화와 별개이며 전제조건일 수도 있습니다. 따라서 먼저 실행을 완료해야 합니다.
  • 생성자가 슈퍼클래스 생성자를 명시적으로 호출하지 않는 경우 Java 컴파일러는 자동으로 슈퍼클래스의 인수가 없는 생성자에 대한 호출을 삽입합니다. 슈퍼클래스에 인수 없는 생성자가 없으면 컴파일 시간 오류가 발생합니다. 그 물체 하다 그러한 생성자가 있으므로 Object가 유일한 슈퍼클래스라면 문제가 없습니다.

Java의 super 키워드

  • 하위 클래스 생성자가 명시적으로든 암시적으로든 상위 클래스의 생성자를 호출하는 경우 Object의 생성자까지 전체 생성자 체인이 호출된다고 생각할 수 있습니다. 실제로 이것이 사실이다. 그것은이라고 생성자 연결 .

FAQ – Java super 키워드

Q1. Java에서 super() 및 super 키워드는 무엇입니까?

감독자() 슈퍼클래스 생성자를 호출하는 데 사용되는 Java 키워드입니다. Super는 슈퍼클래스 멤버에 액세스하고 상속 계층을 유지합니다.

Q2. Java의 슈퍼 클래스는 무엇입니까?

그만큼 슈퍼 클래스라고도 불리는 객체 클래스 클래스 계층 구조의 최상위에 있습니다. Java의 java.lang 패키지 . 사전 정의되었거나 사용자 정의된 모든 클래스는 Object 클래스의 하위 클래스입니다.

Q3. Java에서 Super가 중요한 이유는 무엇입니까?

super는 슈퍼클래스와 서브클래스 간의 관계에 대한 액세스, 초기화 및 관리를 용이하게 하여 코드 재사용성을 향상시키므로 Java에서 필수적입니다.