객체 지향 프로그래밍의 추상화 - Java를 사용하여 설명
추상화는 추상 클래스 및 인터페이스를 통해 달성할 수 있습니다. 추상 클래스를 통해 자바는 진정한 추상화를 달성할 수 없지만 인터페이스를 사용하면 100% 추상화를 달성할 수 있습니다. 방법을 알아보겠습니다.
이 기사에서는 인터페이스에 대해 설명합니다.
Java에서는 다중 상속이 허용되지 않습니다. 즉, 하나의 클래스가 여러 클래스를 확장할 수 없습니다. 이러한 경우가 발생하면 자식 클래스는 어떤 메서드가 어떤 부모 클래스에서 왔는지 구별할 수 없기 때문입니다. 이러한 시나리오에서 인터페이스를 사용하여 다중 상속의 이점을 누릴 수 있으며 여기에 방법이 있습니다.
인터페이스: 인터페이스는 클래스가 구현해야 하는 사양 집합입니다. 기본적으로 인터페이스는 공개적이고 추상적이므로 명시적으로 정의할 필요가 없습니다. 예를 들어 보겠습니다.
아래 코드에서 Engineer라는 인터페이스가 생성됩니다. 즉, Engineer를 구현하는 모든 클래스는 정의된 메서드를 사용해야 합니다. PracticeEngineering 인터페이스 내부를 보면 인터페이스 내부의 기본 메소드가 공개 및 추상임을 의미하는 정의된 공개도 추상도 아니며 정의해도 아무런 해가 없습니다.
package Interfaces;
public interface Engineer {
void PracticeEngineering();//by default abstract and public
}
Doctor라는 인터페이스가 하나 더 있습니다.
package Interfaces;
public interface Doctor{
void performSurgery();
void beomceDoctor(); //by default abstract and public
}
"Student"라는 개인 클래스가 의사이자 엔지니어가 되기를 원한다고 가정합니다. 이제 엔지니어와 의사 사이에는 계층 구조가 없으며 두 직업은 서로 다릅니다. 즉, 엔지니어는 의사의 하위 클래스가 될 수 없고 의사는 엔지니어의 하위 클래스가 될 수 없습니다. 둘 다 같은 수준입니다. 이러한 경우는 인터페이스를 사용하여 해결되는 다중 상속에 속합니다.
클래스는 두 가지 이점을 모두 얻기 위해 여러 인터페이스를 구현할 수 있습니다.
package Interfaces;
public class Student implements Engineer, Doctor{
public static void main(String[] args) {
Person obj = new Person();
obj.PracticeEngineering();
obj.performSurgery();
obj.beomceDoctor();
}
@Override
public void performSurgery() {
System.out.println("Person is performing surgery");
}
@Override
public void PracticeEngineering() {
System.out.println("Person is pursuing Engineering");
}
@Override
public void beomceDoctor() {
System.out.println("Person is pursuing MBBS");
}
}
NOTE
- A child class can extend only one parent class in java ( multiple inheritance is not allowed in java)
- One interface can extend multiple interfaces Ex: Interface “VideoEditing” can extends two Interfaces EditVideo and UploadVideo.
interface EditVideo {
void videoEditor();
}
interface UploadVideo {
void videoUploader()
}
public interface VideoEditing extends EditVideo, UploadVideo {
void StudyConcept();
}
예: "Blogger"클래스가 VideoEditing 인터페이스를 구현하는 경우 videoEditor() 및 videoUploader() 메서드를 포함해야 합니다.
public class Blogger implements VideoEditing {
@Override
void StudyConcept() {
System.out.println("Blogger is Studing concept");
}
@Override
void videoEditor() {
System.out.println("Blogger is editing video");
}
@Override
void videoUploader() {
System.out.println("Blogger is uploading video");
}
}
귀중한 시간을 내어 이 기사를 읽어 주셔서 감사합니다. 오늘 뭔가를 배우셨으리라 확신합니다.😄
Reference
이 문제에 관하여(객체 지향 프로그래밍의 추상화 - Java를 사용하여 설명), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/himanshu_007/abstraction-in-object-oriented-programming-explained-using-java-4eie텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)