목록Java (181)
충분히 쌓여가는
인터페이스의 장점 두 대상(객체) 간의 연결, 대화, 소통을 돕는 중간 역할을 한다 선언(설계)와 구현을 분리시킬 수 있게 한다 개발 시간을 단축할 수 있다 표준화가 가능하다(JDBC) 서로 관계없는 클래스들의 관계를 맺어줄 수 있다 인터페이스 덕분에 B가 변경되어도 A는 안바꿀 수 있게 된다(느슨한 결합) A클래스의 변경 불필요, 인터페이스만 변경해주면됨 -> 변경에 유리 B의 method()를 추상메서드로 갖는 인터페이스 작성 (점선은 B를 C로 변경) 강한 결합 class A { public void method(B b) { b.method(); } } class B { public void method() { System.out.println("B클래스의 메서드"); } } public class..
다형성: 조상 타입 참조 변수로 자손 타입 객체를 다루는 것 인터페이스도 구현 클래스의 부모인가? 엄밀히 말하면 아니지만 부모랑 다름없는 정도(부모는 클래스만 되기 때문) 인터페이스는 몸통이 없기 때문에 다중상속의 충돌문제를 해결하면서 다중상속과 같은 효과를 낼 수 있다 class Fighter extends Unit implements Fightable { public void move(int x, int y) { /* 내용 생략 */} public void attack(Fightable f) { /* 내용 생략 */} } 따라서 인터페이스를 이용한 다형성이 성립된다 [조상 타입 참조 변수(Unit, Fightable)로 자손 타입 객체(Fighter)를 다루는 것] Unit u = new Fighte..
인터페이스(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 클래스..