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에서 메소드와 필드를 상속하여 생성됩니다. 수업.
여기, 개 하위 클래스 및 동물입니다. 슈퍼클래스입니다.
<시간>
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에서 메서드 재정의라고 합니다.
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
키워드는 자식 클래스의 메서드에서 부모 클래스의 메서드를 호출하는 데 사용됩니다.
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
가 포함된 경우 필드와 메서드를 사용하는 경우 이러한 필드와 메서드는 클래스의 하위 클래스에서 액세스할 수 있습니다.
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가지 유형이 있습니다.
단일 상속에서 단일 하위 클래스는 단일 상위 클래스에서 확장됩니다. 예를 들어,
<그림> <시간>다단계 상속에서 하위 클래스는 상위 클래스에서 확장된 다음 동일한 하위 클래스가 다른 클래스의 상위 클래스 역할을 합니다. 예를 들어,
<그림> <시간>계층적 상속에서 여러 하위 클래스는 단일 상위 클래스에서 확장됩니다. 예를 들어,
<그림> <시간>다중 상속에서 단일 하위 클래스는 여러 상위 클래스에서 확장됩니다. 예를 들어,
<그림>참고 :Java는 다중 상속을 지원하지 않습니다. 그러나 인터페이스를 사용하여 다중 상속을 달성할 수 있습니다. 자세한 내용은 Java가 다중 상속을 구현함을 참조하십시오.
<시간>하이브리드 상속은 두 가지 이상의 상속 유형을 조합한 것입니다. 예를 들어,
<그림>여기에서 계층적 상속과 다중 상속을 결합하여 하이브리드 상속을 형성했습니다.
java
자바 PrintStream 클래스 이 자습서에서는 예제를 통해 Java PrintStream 클래스와 해당 print() 및 printf() 메서드에 대해 배웁니다. PrintStream java.io 클래스 패키지는 바이트 대신 일반적으로 읽을 수 있는 형식(텍스트)으로 출력 데이터를 쓰는 데 사용할 수 있습니다. 추상 클래스 OutputStream를 확장합니다. . PrintStream 작업 다른 출력 스트림과 달리 PrintStream 기본 데이터(정수, 문자)를 바이트 대신 텍스트 형식으로 변환합니다. 그런 다음
상속은 한 클래스가 다른 클래스의 속성(메서드 및 필드)을 획득하는 프로세스로 정의할 수 있습니다. 상속을 사용하면 정보를 계층적 순서로 관리할 수 있습니다. 다른 사람의 속성을 상속하는 클래스를 하위 클래스(파생 클래스, 자식 클래스)라고 하고 속성을 상속받는 클래스를 슈퍼 클래스(기본 클래스, 부모 클래스)라고 합니다. 확장 키워드 확장 클래스의 속성을 상속하는 데 사용되는 키워드입니다. 다음은 extends 키워드의 구문입니다. 구문 class Super { ..... ..... } class Sub ext