1. 추상메서드
선언부만 정의하고 구체적인 내용은 비워놓은 메서드
주의할 점
추상메서드가 있는 클래스를 상속받는 자식클래스는 반드시 부모 클래스의 추상메서드를 구현해야 한다.
구조
abstract 리턴타입 메서드명(); //구현하지 않으므로 { } 생략하고 ; 으로 마무리
2. 추상클래스
추상클래스는 추상메서드를 맴버(필드)로 갖는 클래스
주의할 점
1) 추상클래스는 일반 메서드 필드에 존재 가능. 단, 추상 메서드를 하나라도 포함해야함
2) 객체를 생성할 수 없음
구조

사용목적
구현은 자식클래스가 하도록 메서드의 기능을 비워놓고 싶을 때 사용
1. Practice - 추상메서드, 추상클래스 사용
public class Shape_Main { public static void main(String[] args) { Shape shapes[] = new Shape[3]; //부모 객체 배열 요소에 자식 값 넣기 >> 업캐스팅 shapes[0] = new Rect(); // 동적바인딩이 일어남 shapes[1] = new Circle(); shapes[2] = new Line(); for(int i=0;i<3;i++) { shapes[i].draw(); } } } abstract class Shape{ //추상클래스 abstract void draw(); //추상메서드 } class Rect extends Shape{ void draw() { System.out.println("사각형을 그리다"); //오버라이딩 } } class Circle extends Shape{ void draw() { System.out.println("원을 그리다"); //오버라이딩 } } class Line extends Shape{ void draw() { System.out.println("선을 그리다"); //오버라이딩 } }
1.1 결과값

2. Practice
public class Abstract_Pokemon { public static void main(String[] args) { Pokemon pokemon = new Pikachu(); //업캐스팅 System.out.println("이 포켓몬은 : "+pokemon.getName()); pokemon.attack(); pokemon.sound(); pokemon = new Squirtle(); System.out.println("이 포켓몬은 : "+pokemon.getName()); pokemon.attack(); pokemon.sound(); } } abstract class Pokemon{ String name; abstract void attack(); abstract void sound(); public String getName() { return this.name; } } class Pikachu extends Pokemon{ Pikachu(){ //default 생성자 this.name = "피카츄"; } @Override void attack() { System.out.println("전기 공격"); } @Override void sound() { System.out.println("피카 피카!"); } } class Squirtle extends Pokemon{ Squirtle(){ this.name = "꼬부기"; } @Override void attack() { System.out.println("물 공격"); } @Override void sound() { System.out.println("꼬북 꼬북!"); } }
2.2 결과 값


'IT Study > 따즈아 Java & Java 기초' 카테고리의 다른 글
따즈아 java 멘토 시리즈 28강 - 내부클래스 (0) | 2022.12.27 |
---|---|
따즈아 java 멘토 시리즈 27강 - 인터페이스 (0) | 2022.12.27 |
따즈아 java 멘토 시리즈 25강 - 다형성 (0) | 2022.12.27 |
따즈아 java 멘토 시리즈 24강 - 상속과 다향성_상속/메서드 오버라이딩 (0) | 2022.12.27 |
따즈아 java 멘토 시리즈 23강 - 클래스_생성자 (0) | 2022.12.27 |
댓글