-
Java - 추상화 (Abstraction)Java 2018. 1. 19. 10:38반응형// 추상화 - 기본적인건 만들어놔야함, 상속을 받으면 오버라이드// 추상 메서드를 통해 꼭 구현할 메서드를 오버라이드 할 수 있다.// 꼭 구현될 기능만 모아둔 것, 둘은 상속 관계// 추상클래스는 객체화 할 수 없고, 자식 외엔 부를 수 없다.// 추상클래스의 생성자에 접근 하고 싶다면 super()를 호출 해야 한다.// 추상화 클래스 및 메서드를 선언 하기 위해서는 abstract라는 키워드를 선언해야 한다.<---------------- Abstract Class ---------------------->public abstract class Mamal { // 추상화 클래스public String name;public Mamal(String name) {this.name = name;}public void birth() {System.out.println(name + "이 자식을 낳는다.");}public void eat() {System.out.println(name + "이 먹이를 먹는다.");}}< Person Class >public class Person extends Mamal {public Person(String name) {super(name);}public void useTool() {System.out.println(name + "이 도구를 사용한다.");}public void social() {System.out.println(name + "이 생활을 한다.");}public void talk() {System.out.println(name + "이 말을 한다.");}}< Main >public class Main {public static void main(String[] args) {// 1. 추상화 클래스는 상속해서 사용 해야 한다.// 2. 추상화 클래스는 외부에서 사용할 수 없다. (객체화가 안된다)// Mamal mal = new Mamal(); -> XPerson p = new Person("기린");// 부모것 ( Mamal - abstract )p.birth();p.eat();// 자식것 ( Person )p.useTool();p.social();p.talk();}}<---------------- Abstract Method ---------------------->public class Concrete extends Abs {// 추상 메서드는 Abs를 상속 받음과 동시에 자동 생성 된다.@Overridepublic void must1() {}@Overridepublic void must2() {}public void child() {}}public abstract class Abs {// 추상 메서드 (이 메서드는 필수로 만들어야 하는 메서드)public abstract void must1();public abstract void must2();// 일반 메서드 (그냥 사용하거나 오버라이드 할 수 있는 메서드)public void parent() {System.out.println("그냥 사용하거나 오버라이드 할 수 있는 메서드");};}반응형
'Java' 카테고리의 다른 글
Java - Api 참고 사이트 (0) 2018.01.23 Java - Interface (0) 2018.01.19 Java - Casting 명시적변환 (0) 2018.01.18 Java - Promotion, Casting 묵시적, 명시적 형변환 (0) 2018.01.18 Java - 다형성(Polymarphism) (0) 2018.01.18 댓글