반응형
추상 클래스 및 메서드
데이터 추상화는 특정 세부 사항을 숨기고 사용자에게 필수적인 정보만 보여주는 과정이다.
추상화는 추상 클래스 또는 인터페이스(다음 장에서 자세히 학습할 것)를 통해 달성될 수 있습니다.
abstract 키워드는 클래스 및 메서드에 사용되는 비액세스 한정자입니다.
Abstract class: 개체를 만드는 데 사용할 수 없는 제한된 클래스입니다. 이 클래스에 액세스하려면 다른 클래스에서 상속되어야 합니다.
추상 메서드: 추상 클래스에서만 사용할 수 있으며 본문이 없습니다. 본문은 하위 클래스(에서 상속됨)에 의해 제공됩니다.
abstract class Animal {
public abstract void animalSound();
public void sleep() {
System.out.println("Zzz");
}
}
// Abstract class
abstract class Animal {
// Abstract method (does not have a body)
public abstract void animalSound();
// Regular method
public void sleep() {
System.out.println("Zzz");
}
}
// Subclass (inherit from Animal)
class Pig extends Animal {
public void animalSound() {
// The body of animalSound() is provided here
System.out.println("The pig says: wee wee");
}
}
class Main {
public static void main(String[] args) {
Pig myPig = new Pig(); // Create a Pig object
myPig.animalSound();
myPig.sleep();
}
}
자바 상속(Inheritance)
자바에서는 한 클래스에서 다른 클래스로 속성과 메서드를 상속할 수 있다. 우리는 "상속 개념"을 두 가지 범주로 분류한다.
하위 클래스(하위 클래스) - 다른 클래스에서 상속되는 클래스
superclass(상위) - 상속되는 클래스
클래스에서 상속하려면 확장 키워드를 사용합니다.
class Vehicle {
protected String brand = "Ford"; // Vehicle attribute
public void honk() { // Vehicle method
System.out.println("Tuut, tuut!");
}
}
class Car extends Vehicle {
private String modelName = "Mustang"; // Car attribute
public static void main(String[] args) {
// Create a myCar object
Car myCar = new Car();
// Call the honk() method (from the Vehicle class) on the myCar object
myCar.honk();
// Display the value of the brand attribute (from the Vehicle class) and the value of the modelName from the Car class
System.out.println(myCar.brand + " " + myCar.modelName);
}
}
Java Polymorphism
다형성은 '여러 가지 형태'를 의미하며, 유전으로 서로 연관된 계층이 많을 때 발생한다.
이전 장에서 지정한 대로 상속을 통해 다른 클래스의 속성과 메서드를 상속할 수 있습니다. 다형성은 다양한 작업을 수행하기 위해 이러한 방법을 사용합니다. 이를 통해 단일 작업을 다양한 방식으로 수행할 수 있습니다
class Animal {
public void animalSound() {
System.out.println("The animal makes a sound");
}
}
class Pig extends Animal {
public void animalSound() {
System.out.println("The pig says: wee wee");
}
}
class Dog extends Animal {
public void animalSound() {
System.out.println("The dog says: bow wow");
}
}
class Animal {
public void animalSound() {
System.out.println("The animal makes a sound");
}
}
class Pig extends Animal {
public void animalSound() {
System.out.println("The pig says: wee wee");
}
}
class Dog extends Animal {
public void animalSound() {
System.out.println("The dog says: bow wow");
}
}
class Main {
public static void main(String[] args) {
Animal myAnimal = new Animal(); // Create a Animal object
Animal myPig = new Pig(); // Create a Pig object
Animal myDog = new Dog(); // Create a Dog object
myAnimal.animalSound();
myPig.animalSound();
myDog.animalSound();
}
}
Java Interface
자바에서 추상화를 달성하는 또 다른 방법은 인터페이스를 사용합니다.
// interface
interface Animal {
public void animalSound(); // interface method (does not have a body)
public void run(); // interface method (does not have a body)
}
// Interface
interface Animal {
public void animalSound(); // interface method (does not have a body)
public void sleep(); // interface method (does not have a body)
}
// Pig "implements" the Animal interface
class Pig implements Animal {
public void animalSound() {
// The body of animalSound() is provided here
System.out.println("The pig says: wee wee");
}
public void sleep() {
// The body of sleep() is provided here
System.out.println("Zzz");
}
}
class Main {
public static void main(String[] args) {
Pig myPig = new Pig(); // Create a Pig object
myPig.animalSound();
myPig.sleep();
}
}
interface FirstInterface {
public void myMethod(); // interface method
}
interface SecondInterface {
public void myOtherMethod(); // interface method
}
class DemoClass implements FirstInterface, SecondInterface {
public void myMethod() {
System.out.println("Some text..");
}
public void myOtherMethod() {
System.out.println("Some other text...");
}
}
class Main {
public static void main(String[] args) {
DemoClass myObj = new DemoClass();
myObj.myMethod();
myObj.myOtherMethod();
}
}
반응형
'개발자정보' 카테고리의 다른 글
웹 개발자 HTML 태그 정리 (0) | 2022.06.10 |
---|---|
자바 Threads를 활용한 병렬처리 (0) | 2022.06.04 |
Java Exceptions (0) | 2022.06.04 |
Java 클래스(Classes)와 객체(Objects) (0) | 2022.06.04 |
Java 조건 및 반복문 정리 (0) | 2022.06.04 |