목록Java/객체지향 (41)
충분히 쌓여가는
인터페이스(interface) 추상 메서드의 집합 구현된 것이 전혀 없는 설계도, 껍데기(모든 멤버가 public) 인터페이스 선언 변수(iv, cv) 가질 수 없다, 상수는 됨 모든 인터페이스의 멤버는 public, 메서드는 abstract(추상 메서드) interface 인터페이스이름 { public static final 타입 상수이름 = 값; // 상수 public abstract 메서드이름(매개변수목록); // 추상메서드(중요!) } 여기에서 String getCardKind();는 추상 메서드인데 abstract가 없다, 이는 pulbic와 abstract를 생략한 것임 (생략 가능 이유: 인터페이스의 메서드는 public이고 abstract이기 때문) final int DIAMOND와 같은 ..
추상클래스의 작성 여러 클래스에 공통적으로 사용될 수 있는 추상클래스를 바로 작성하거나 기존 클래스의 공통 부분을 뽑아서 추상클래스를 만든다 추상클래스 사용 전 class Marine { int x, y; void move(int x, int y) { } void stop() { } void stimPact() { } } class Tank { int x, y; void move(int x, int y) { } void stop() { } void changeMode() { } } class Dropship { int x, y; void move(int x, int y) { } void stop() { } void load() { } void unload() { } } 추상클래스 사용 후 Unit 클래스..
추상 클래스 미완성 설계도, 미완성 메서드를 갖고 있는 클래스 추상 메서드를 가지고 있는 클래스에 abstract라는 키워드를 붙이고 추상 클래스라고 한다 abstract class Player { // 추상클래스(미완성 클래스) abstract void play(int pos); // 추상메서드(몸통 {}이 없는 미완성 메서드) abstract void stop(); // 추상클래스 } 추상 클래스는 다른 클래스 작성에 도움을 주기 위한 것으로, 인스턴스 생성 불가능하다 추상 클래스의 Player의 객체를 만드는 것이 불가능하다(아직 설계도가 완성되지 않았기 때문) Player p = new Player(); // 에러, 추상 클래스의 인스턴스 생성 불가 상속을 통해 추상 메서드를 완성해야 인스턴스 생..
하나의 배열로 여러 종류 객체 다루기 조상타입의 배열에 자손들의 객체를 담을 수 있다 Product라는 타입의 배열 p는 다형성 때문에 자식들이 들어올 수 있다 (Tv 객체, Computer 객체, Audio 객체는 타입이 전부 다른데 함께 배열에 들어갈 수 있다) 코드 class Buyer { int money = 1000; int bonusPoint = 0; Product[] cart = new Product[10]; int i = 0; void buy(Product p) { if(money < p.price) { System.out.print("잔액 부족"); return; } money -= p.price; bonusPoint += p.bonusPoint; cart[i++] = p; } } cla..