Notice
Recent Posts
Recent Comments
Link
컴퓨터는 잘못이 없다..
[JAVA]추상 클래스 본문
Contents
접기
#핵심 요약
- 추상 클래스
- 하나 이상의 추상 메소드를 포함하는 클래스
- 반드시 구현해야하는 부분에 대해 명시적으로 표현
- 추상 클래스 자체는 객체 생성 불가 (*단, 익명클래스를 통해서 객체 생성 가능)
- 추상 메소드
- 자식클래스에서 반드시 오버라이딩 해야하는 메소드
- 선언만 하고 구현 내용은 없다.
#소스 코드
추상 클래스와 추상 메소드, 익명 클래스 예제
// Java 프로그래밍 - 추상 클래스
// 추상 클래스 Person
abstract class Person {
abstract void printInfo();
}
// 추상 클래스 상속
class Student extends Person {
public void printInfo() {
System.out.println("Student.printInfo");
} //자식클래스에서 반드시 오버라이딩 해주어야한다.
}
public class Main {
public static void main(String[] args) {
// 추상 클래스의 사용
// Person p1 = new Person(); //추상클래스를 바로 객체로 만드는 것은 불가능한다.
Student s1 = new Student();
s1.printInfo();
//추상클래스를 객체로 만들어주려면 아래와 같이 익명클래스를 통해 만들어주어야한다.
Person p2 = new Person() {
@Override
void printInfo() {
System.out.println("Main.printInfo");
}
};
p2.printInfo();
}
}
#소스 코드2
추상 클래스와 추상 메소드 연습문제
// Practice
// 아래 Device 추상클래스를 이용하여
// UsbPort1 클래스와 WiFi 클래스를 자유롭게 구현해보세요.
abstract class Device {
int deviceId;
abstract void deviceInfo();
abstract void connect();
abstract void disconnect();
abstract void send();
abstract void receive();
}
// UsbPort1 클래스
class UsbPort1 extends Device {
UsbPort1(int id) {
this.deviceId = id;
} //생성자
void deviceInfo() {
System.out.println("id = " + this.deviceId);
}
void connect() {
System.out.println("연결 하였습니다.");
}
void disconnect() {
System.out.println("연결이 해제되었습니다.");
}
void send() {
System.out.println("데이터를 전송합니다.");
}
void receive() {
System.out.println("데이터를 수신합니다.");
}
}
// WiFi 클래스
class WiFi extends Device { //빨간 줄 우클릭 > Genorator > implement method 로 반드시 오버라이딩 해야할 메소르를 구현가능하다.
public WiFi(int id) {
this.deviceId = id;
} //생성자.
void deviceInfo() {
}
void connect() {
}
void disconnect() {
}
void send() {
}
void receive() {
}
}
public class Practice {
public static void main(String[] args) {
// Test code
UsbPort1 usb1 = new UsbPort1(1);
usb1.deviceInfo();
usb1.connect();
usb1.disconnect();
usb1.send();
usb1.receive();
WiFi wifi = new WiFi(0);
}
}
'공부 > JAVA' 카테고리의 다른 글
[JAVA]인터페이스 (0) | 2024.04.20 |
---|---|
[JAVA]다형성 (0) | 2024.04.13 |
[JAVA]상속 (0) | 2024.04.10 |
Comments