Latest web development tutorials

자바 상속

이 계층 레벨 클래스의 생성을 허용하기 때문에 상속은 객체 지향 프로그래밍 자바 기술의 기초이다. 상속 방법의 다른 개체에서 특성을 얻을 목적으로 이해 될 수있다.

부모 클래스가 클래스 클래스 B, 클래스 B와 클래스 C의 경우 부모 클래스이며, 우리는 또한 C는 (A)의 서브 클래스 호출, 클래스 A에서 클래스 C가 상속됩니다. 자바에서 클래스 상속 한 상속, 즉, 서브 클래스는 하나의 부모 클래스를 가질 수 있습니다

두 가장 일반적으로 사용되는 키워드 상속 확장 구현입니다.

두 키워드의 사용 및 객체가 다른 객체-A가 (a)의 관계 여부를 결정한다.

이 두 키워드를 사용하여, 우리는 다른 객체의 특성을 얻을 목적을 달성 할 수있다.

Object 클래스는 모든 클래스의 조상 그래서 모든 자바 클래스는 java.lang.Object 상위 클래스로 상속되며, 또한 개체의 모든 클래스는 부모 클래스가 있어야합니다.

키워드가 다른 클래스에서 클래스 상속을 선언 할 수 있습니다 이상이-확장하여 다음과 같이 일반적인 형태는 다음과 같습니다

// A.java
public class A {
    private int i;
    protected int j;
 
    public void func() {
 
    }
}
 
// B.java
public class B extends A {
}

위의 코드 쇼, B는 A로부터 상속, B는 A의 서브 클래스 그리고 A는 Object의 서브 클래스는, 명시 적으로이 선언되지 않을 수 있습니다.

(A)의 서브 클래스 인스턴스 B의 모든 멤버 변수하지만 전용 변수 B의 멤버를 갖지만 A의 밀봉을 보장 액세스를 갖고 있지 않기 때문에.


IS-A 관계

즉, IS-A : 객체가 다른 객체 분류입니다.

다음은 키워드가 구현 상속을 확장합니다.

public class Animal{
}

public class Mammal extends Animal{
}

public class Reptile extends Animal{
}

public class Dog extends Mammal{
}

위의 예에 따라, 다음과 같은 문장은 사실이다 :

  • 동물 클래스는 부모 클래스 포유류 클래스입니다.
  • 동물 클래스는 부모 클래스 파충류 클래스입니다.
  • 포유류와 파충류 클래스는 동물 클래스의 서브 클래스입니다.
  • 개 클래스는 모두 Mammal 클래스의 서브 클래스는 동물 클래스의 서브 클래스입니다.

다음과 같이 IS-A 위의 예에서 관계의 분석 :

  • 포유류는 IS-A 동물
  • 파충류는 IS-A 동물
  • 개는 IS-A 포유류

그러므로 : 개는 동물-A는 IS

키워드를 사용하여 확장함으로써, 서브 클래스는 모든 부모 클래스의 메서드와 속성을 상속하지만, 개인 (개인) 메서드와 속성을 사용할 수 없습니다.

우리는 포유류를 확인할 수 있습니다 instanceof 연산자는 IS-A 동물 사용

public class Dog extends Mammal{

   public static void main(String args[]){

      Animal a = new Animal();
      Mammal m = new Mammal();
      Dog d = new Dog();

      System.out.println(m instanceof Animal);
      System.out.println(d instanceof Mammal);
      System.out.println(d instanceof Animal);
   }
}

다음과 같은 결과를 컴파일 위의 예는 다음과 같습니다

true
true
true

소개 키워드를 확장 한 후, 우리는 IS-A 관계를 표시하기 위해 구현 키워드를 사용하는 방법에 대해 알아 보겠습니다.

클래스 상속 인터페이스의 경우 키워드를 구현 키워드를 사용할 수없는 이러한 상황이 연장된다.

public interface Animal {}

public class Mammal implements Animal{
}

public class Dog extends Mammal{
}

instanceof를 키워드

당신은 포유류 개 개체 클래스 동물의 인스턴스인지 여부를 테스트하기 위해 instanceof 연산자를 사용할 수 있습니다.

interface Animal{}

class Mammal implements Animal{}

public class Dog extends Mammal{
   public static void main(String args[]){

      Mammal m = new Mammal();
      Dog d = new Dog();

      System.out.println(m instanceof Animal);
      System.out.println(d instanceof Mammal);
      System.out.println(d instanceof Animal);
   }
} 

다음과 같은 결과를 컴파일 위의 예는 다음과 같습니다

true
true
true

관계-A를 HAS

클래스와 해당 멤버 대신 제휴-A를 HAS. 이 코드를 재사용 코드 오류를 줄일 수 있습니다.

public class Vehicle{}
public class Speed{}
public class Van extends Vehicle{
	private Speed sp;
} 

반 클래스와 스피드 클래스입니다 관계 (밴은 속도가)-A를 갖고, 그래서 당신은 모든 코드가 클래스의 반 속도 클래스로 붙여 넣을 필요가 없습니다, 및 속도 클래스는 여러 애플리케이션에서 재사용 할 수있다.

객체 지향 기능에서, 사용자는 얼마나 내부 클래스에 대해 걱정할 필요가 없다.

사용자는 단지 특정한 기능 완료 보낸 클래스를 호출하는 방법을 알 필요가 있으므로 반 클래스 구현 상세는 스스로 수행하거나 작업을 수행하는 다른 클래스를 호출하는 반 클래스를 알 필요없이, 사용자로부터 숨겨진.

자바 클래스가 여러 클래스를 상속 할 수 있다는 것을 의미에만 단일 상속을 지원합니다.

다음 연습은 법적되지 않습니다 :

public class extends Animal, Mammal{} 

자바는 단일 상속 (상속과 추상 기본 클래스)를 지원하지만, 우리는 (다중 상속 인터페이스를 달성하기 위해) 구현하는 인터페이스를 사용할 수 있습니다, 스크립트 구조 등 :

public class Apple extends Fruit implements Fruit1, Fruit2{}

(가) 키워드 implements 키워드 클래스 상속과 인터페이스를 구현 확장으로 일반적으로, 우리는 기본 클래스와 추상 클래스를 상속합니다.