728x90
추상클래스
접근제한자 abstract class 클래스명{ }
=> abstract : 예약어 -> 추상클래스, 추상메소드 선언할 때 붙임.
>> 추상 메소드가 존재하는 순간 추상 클래스로 정의됨
abstract 라는 예약어를 사용해서 정의 해야함.
객체 생성이 불가능하다. 부모클래스 구실은 가능(다형성 적용 가능)
추상클래스 == 추상메소드 + 일반필드 + 일반메소드
=> 추상메소드가 없어도 추상클래스로 정의 가능 => 개발자의 역량
public abstract class Sports {
private int people;
public Sports() {}
public Sports(int people) {
this.people = people;
}
public int getPeople() {
return people;
}
public void setPeople(int people) {
this.people = people;
}
@Override
public String toString() {
return "people : " + people;
}
}
728x90
추상 메소드
접근제한자 abstract 반환형 메소드명();
public class VolleyBall extends Sports{
@Override
public void rule() {
System.out.println("네트에 몸이 닿으면 안됨");
}
}
====================================================
public class Soccer extends Sports {
// 미완성된 클래스 == 추상클래스를 상속받게 되면
// 부모 클래스에 있는 추상메소드를 "강제로" 오버라이딩을 "반드시" 해줘야 함
@Override
public void rule() {
System.out.println("손으로 공을 만지면 안됨");
}
}
=====================================================
public class BasicRun {
public static void main(String[] args) {
// 추상클래스로 객체 생성 불가
// 클래스가 미완성되었기 때문
//Sports s = new Sports();
// Sports s; //객체 생성 X, 참조형 변수로 사용 O
// s = new Soccer();
Sports s = new Soccer();
// 다형성을 이용하여 자식 객체를 받아주는 용도로 사용 가능
// 객체 배열
Sports[] arr = new Sports[2];
arr[0] = new Soccer();
arr[1] = new VolleyBall();
for(int i =0; i<arr.length;i++) {
arr[i].rule();
}
// 추상메소드를 사용할 경우
// 메소드 사용의 통일성을 확보할 수 있다.
// 표준화된 틀을 제공 => 상속을 받은 자식클래스의 경우 반드시 미완성 메소드를 완성시켜야 함.
}
}
728x90
'Programming > JAVA' 카테고리의 다른 글
[JAVA] 예외처리 / RuntimeException / ArithmeticException / e.printStackTrace() / Arr (1) | 2023.12.29 |
---|---|
[JAVA] 다형성(3) / 인터페이스 / 관련 예제 (1) | 2023.12.27 |
[JAVA] 다형성 / 형변환 / 관련 예제 (1) | 2023.12.27 |
[JAVA] 상속 / 오버라이딩 / 관련 예제 (1) | 2023.12.27 |
[JAVA] 객체 배열 (0) | 2023.12.27 |