자바 추상클래스
추상클래스란?
-추상클래스는 메서드명만 존재하고 안의 내용은 자식 클래스에서 구현되는 클래스를 말한다.
-이러한 내용이 없는 메서드를 추상 메서드라 한다,
-추상클래스 안에는 추상 메서드와 일반 메서드 모두 다 사용할 수 있다 그러나 추상 메서드가 하나 이상 있어야 한다.
-추상 클래스는 자신의 인스턴스를 객체로 가질 수 없다. 이 말은 자신을 객체로 사용이 불가능하다 자식클래스에 상속 후 자식클래스를 인스턴스 하여 부모인 추상클래스 내용을 사용할 수 있다.
추상 클래스 선언
abstract class 클래스명 => 이렇게 선언할 수 있다.
추상 메서드 선언
abstract 반환유형 메서드명(); => 이렇게 선언할 수 있다.
추상클래스 사용법
-추상클래스
abstract class Animal {
String name;
public Animal(String name) {
this.name = name;
}
// 추상 메서드
abstract void makeSound();
}
-자식 클래스
// Animal 클래스를 상속받는 Dog 클래스
class Dog extends Animal {
public Dog(String name) {
super(name);
}
// 추상 메서드의 구현
void makeSound() {
System.out.println(name + "이(가) 멍멍 짖습니다.");
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog("멍멍이");
dog.makeSound(); // 출력: 멍멍이가 멍멍 짖습니다.
}
}
자바 인터페이스
인터페이스란?
-추상 클래스와 마찬가지로 그 자체로 객체로 만들 수 없다.
-추상 메서드만 포함 가능하다.
-다중 상속을 구현할 수 있다,
-변수를 포함할 수는 있으나 포함하지 않는 게 좋다.
인터페이스 선언
interface 인터페이스명{
}
interface Animal {
void makeSound(); // 추상 메서드
void eat(); // 추상 메서드
}
인터페이스의 상속과 상용법 예시
부모 인터페이스
// 부모 인터페이스
interface Animal {
void makeSound();
}
자식 인터페이스
// 자식 인터페이스
interface Pet extends Animal {
void play();
}
pet을 상속할 클래스
// Pet 인터페이스를 구현하는 Dog 클래스
class Dog implements Pet {
public void makeSound() {
System.out.println("멍멍");
}
public void play() {
System.out.println("공놀이를 합니다.");
}
}
메인
public class Main {
public static void main(String[] args) {
Pet dog = new Dog();
dog.makeSound(); // 출력: 멍멍
dog.play(); // 출력: 공놀이를 합니다.
}
}
인터페이스가 인터페이스에 상속할 때에는 extend를 이용하여 상속할 수 있다.
인터페이스가 클래스에 상속할 경우에는 implements를 이용하여 상속할 수 있다.
인터페이스 다중 상속
// 첫 번째 인터페이스
interface Walkable {
void walk();
}
// 두 번째 인터페이스
interface Swimmable {
void swim();
}
// 다중 상속을 받는 인터페이스
interface Amphibious extends Walkable, Swimmable {
void amphibiousAction();
}
// 클래스가 다중 인터페이스를 상속 받을 경우
class Frog implements Walkable, Swimmable {
public void walk() {
System.out.println("개구리가 걷습니다.");
}
public void swim() {
System.out.println("개구리가 수영합니다.");
}
}
반응형