산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

자바 상속

자바 상속

이 자습서에서는 예제를 통해 Java 상속 및 해당 유형에 대해 알아봅니다.

상속은 기존 클래스에서 새 클래스를 생성할 수 있게 해주는 OOP의 주요 기능 중 하나입니다.

생성된 새 클래스를 하위 클래스라고 합니다. (하위 또는 파생 클래스) 및 하위 클래스가 파생된 기존 클래스를 수퍼클래스라고 합니다. (부모 또는 기본 클래스).

extends 키워드는 Java에서 상속을 수행하는 데 사용됩니다. 예를 들어,

class Animal {
  // methods and fields
}

// use of extends keyword
// to perform inheritance
class Dog extends Animal {

  // methods and fields of Animal
  // methods and fields of Dog
}

위의 예에서 Dog 클래스는 Animal에서 메소드와 필드를 상속하여 생성됩니다. 수업.

여기, 하위 클래스 및 동물입니다. 슈퍼클래스입니다.

<시간>

예제 1:자바 상속

class Animal {

  // field and method of the parent class
  String name;
  public void eat() {
    System.out.println("I can eat");
  }
}

// inherit from Animal
class Dog extends Animal {

  // new method in subclass
  public void display() {
    System.out.println("My name is " + name);
  }
}

class Main {
  public static void main(String[] args) {

    // create an object of the subclass
    Dog labrador = new Dog();

    // access field of superclass
    labrador.name = "Rohu";
    labrador.display();

    // call method of superclass
    // using object of subclass
    labrador.eat();

  }
}

출력

My name is Rohu
I can eat

위의 예에서 Dog 하위 클래스를 파생했습니다. 슈퍼클래스 동물에서 . 진술에 주목하십시오.

labrador.name = "Rohu";

labrador.eat();

여기, 래브라도 Dog의 개체입니다. . 그러나 이름eat() Animal의 구성원입니다. 수업.

이후 Animal에서 필드와 메서드를 상속합니다. , Dog 개체를 사용하여 필드와 메서드에 액세스할 수 있습니다. .

<그림> <시간>

관계와 관계

Java에서 상속은 is-a입니다. 관계. 즉, 두 클래스 사이에 is-관계가 있는 경우에만 상속을 사용합니다. 예를 들어,

여기 자동차 차량에서 상속 가능 , 주황색 과일에서 상속 가능 등이 있습니다.

<시간>

자바 상속의 메서드 재정의

예시 1에서 , 우리는 서브클래스의 객체가 슈퍼클래스의 메소드에 접근할 수 있음을 봅니다.

하지만 슈퍼클래스와 서브클래스에 같은 메서드가 있다면 어떻게 될까요?

이 경우 하위 클래스의 메서드가 슈퍼 클래스의 메서드를 재정의합니다. 이 개념을 Java에서 메서드 재정의라고 합니다.

예제 2:Java 상속에서 메소드 재정의

class Animal {

  // method in the superclass
  public void eat() {
    System.out.println("I can eat");
  }
}

// Dog inherits Animal
class Dog extends Animal {

  // overriding the eat() method
  @Override
  public void eat() {
    System.out.println("I eat dog food");
  }

  // new method in subclass
  public void bark() {
    System.out.println("I can bark");
  }
}

class Main {
  public static void main(String[] args) {

    // create an object of the subclass
    Dog labrador = new Dog();

    // call the eat() method
    labrador.eat();
    labrador.bark();
  }
}

출력

I eat dog food
I can bark

위의 예에서 eat() 메소드는 슈퍼클래스 Animal에 모두 존재합니다. 및 하위 클래스 .

여기에서 labrador 개체를 만들었습니다. 의 .

이제 eat()를 호출하면 labrador 개체 사용 , Dog 내부의 메소드 라고 합니다. 파생 클래스 내의 메서드가 기본 클래스 내의 메서드를 재정의하기 때문입니다.

이를 메서드 재정의라고 합니다. 자세한 내용은 Java 메서드 재정의를 참조하십시오.

참고 :@Override를 사용했습니다. 메서드를 재정의하고 있음을 컴파일러에 알리는 주석. 그러나 주석은 필수가 아닙니다. 자세한 내용은 Java 주석을 참조하십시오.

<시간>

자바 상속의 슈퍼 키워드

이전에 우리는 서브클래스의 동일한 메소드가 수퍼클래스의 메소드를 재정의하는 것을 보았습니다.

이러한 상황에서 super 키워드는 자식 클래스의 메서드에서 부모 클래스의 메서드를 호출하는 데 사용됩니다.

예시 3:상속의 슈퍼 키워드

class Animal {

  // method in the superclass
  public void eat() {
    System.out.println("I can eat");
  }
}

// Dog inherits Animal
class Dog extends Animal {

  // overriding the eat() method
  @Override
  public void eat() {

    // call method of superclass
    super.eat();
    System.out.println("I eat dog food");
  }

  // new method in subclass
  public void bark() {
    System.out.println("I can bark");
  }
}

class Main {
  public static void main(String[] args) {

    // create an object of the subclass
    Dog labrador = new Dog();

    // call the eat() method
    labrador.eat();
    labrador.bark();
  }
}

출력

I can eat
I eat dog food
I can bark 

위의 예에서 eat() 메소드는 기본 클래스 Animal 모두에 있습니다. 파생 클래스 Dog . 진술을 주목하십시오.

super.eat();

여기에서 super 키워드는 eat()을 호출하는 데 사용됩니다. 슈퍼클래스에 존재하는 메소드.

super를 사용할 수도 있습니다. 하위 클래스의 생성자에서 상위 클래스의 생성자를 호출하는 키워드입니다. 자세히 알아보려면 Java 슈퍼 키워드를 방문하세요.

<시간>

상속의 보호된 구성원

Java에서 클래스에 protected가 포함된 경우 필드와 메서드를 사용하는 경우 이러한 필드와 메서드는 클래스의 하위 클래스에서 액세스할 수 있습니다.

예시 4:상속의 보호된 구성원

class Animal {
  protected String name;

  protected void display() {
    System.out.println("I am an animal.");
  }
}

class Dog extends Animal {

  public void getInfo() {
    System.out.println("My name is " + name);
  }
}

class Main {
  public static void main(String[] args) {

    // create an object of the subclass
    Dog labrador = new Dog();

    // access protected field and method
    // using the object of subclass
    labrador.name = "Rocky";
    labrador.display();

    labrador.getInfo();
  }
}

출력

I am an animal.
My name is Rocky

위의 예에서는 Animal이라는 클래스를 만들었습니다. 클래스에 보호된 필드가 포함됨:name 및 메소드:display() .

우리는 를 상속받았습니다. 클래스는 동물을 상속합니다. . 진술을 주목하십시오.

labrador.name = "Rocky";
labrador.display();

여기에서 labrador를 사용하여 슈퍼클래스의 보호된 필드와 메서드에 액세스할 수 있습니다. 하위 클래스의 개체입니다.

<시간>

상속을 사용하는 이유

<시간>

상속 유형

상속에는 5가지 유형이 있습니다.

1. 단일 상속

단일 상속에서 단일 하위 클래스는 단일 상위 클래스에서 확장됩니다. 예를 들어,

<그림> <시간>

2. 다단계 상속

다단계 상속에서 하위 클래스는 상위 클래스에서 확장된 다음 동일한 하위 클래스가 다른 클래스의 상위 클래스 역할을 합니다. 예를 들어,

<그림> <시간>

3. 계층적 상속

계층적 상속에서 여러 하위 클래스는 단일 상위 클래스에서 확장됩니다. 예를 들어,

<그림> <시간>

4. 다중 상속

다중 상속에서 단일 하위 클래스는 여러 상위 클래스에서 확장됩니다. 예를 들어,

<그림>

참고 :Java는 다중 상속을 지원하지 않습니다. 그러나 인터페이스를 사용하여 다중 상속을 달성할 수 있습니다. 자세한 내용은 Java가 다중 상속을 구현함을 참조하십시오.

<시간>

5. 하이브리드 상속

하이브리드 상속은 두 가지 이상의 상속 유형을 조합한 것입니다. 예를 들어,

<그림>

여기에서 계층적 상속과 다중 상속을 결합하여 하이브리드 상속을 형성했습니다.


java

  1. 자바 최종 키워드
  2. 자바 instanceof 연산자
  3. 자바 중첩 정적 클래스
  4. 자바 익명 클래스
  5. 자바 싱글톤 클래스
  6. 자바 리플렉션
  7. 자바 ObjectOutputStream 클래스
  8. 자바 제네릭
  9. 자바 파일 클래스
  10. C# - 상속