박정훈
주제:남궁성 자바의정석 7-3,4(포함관계), 7-29,30 여러 객체를 배열로 다루기, 인터페이스
배운것:
1.클래스간의 포함관계

Circle circle = new Circle(); → circle.(Point)c.x or circle.(Point)c.y
포함관계 : ‘~은~을 가지고 있다.(has-a)’
상속관계 : ‘~은~을 이다.(is-a)’ extends

원(Circle)은 점(Point)이다. - Circle is a point.
원(Circle)은 점(Point)을 가지고있다. - Circle has a Point.
90%이상이 포함 관계이다.! 상속은 제약이 있어 꼭 필요 할 때만.
잘 모르면 포함으로 진행해라. 대부분 포함이다.
매개변수 다형성
class Product {
int price;
int bonusPoint;
Product(int price) {
this.price = price;
bonusPoint = (int)(price/10.0);
}
Product() {}//기본생성자
}
class Tv1 extends Product
Tv() {
super(100)
}
pulbic String toString() {
return "Tv";
}
class Computer extends Product
Compupter() {
super(200)
}
pulbic String toString() {
return "Computer";
}
Class Buyer {
int money = 1000;
int bonusPoint = 0;int i = 0;
Product[] cart = new Product[10];
}
void buy(Product p) {
if(money< p.price) {
System.out.println("잔액부족");
return;
}
money-= p.price;
bonusPoint += p.bonusPoint;
cart[i++] = p;
}
void summary() {
int sum = 0;
String itemList = "";
for(int i=0; i<cart.length;i++) {
if(cart[i]==null) break;
sum += cart[i].price;
itemList += cart[i] + ",";
}
System.out.println(sum + itemList)
}
}
public static void main(String args[]) {
Buyer b = new Buyer();
b.buy(new Tv1());
b.buy(new Computer());
b.summary();
}
인터페이스는 다중 구현이 가능 , 충돌해도 문제 없음!
내용이 없어서 인터페이스는 다중 구현이 가능하다.
다중상속의 문제 : 같은 메소드가 있을때 어떤걸 사용해야 할 지 모른다.
public abstact가 생략 , 추상메소드 집합이 인터페이스
Walkable void run(), Runnable void run()
미완성 클래스 → 구현을 통해서 추상 메서드를 완성 하는 것.
다형성 : 조상 참조변수로 자손객체를 가르키는 것
Tv t = new SmallTv();

매개변수에 타입이 인터페이스인 경우는 해당 인터페이스를 구현한 클래스의 인스턴스만 가능하다!
Fightable로 구현한 객체만 받겠다는 뜻
반환타입이 인터페이스인 경우

리턴타입이 인터페이스인 경우는 해당 인터페이스를 구현한 클래스의 객체를 반환하겠다는 의미이다.
메소드를 호출한 쪽 에서는 반환타입과 일치하는 변수의 결과
Figable = new Fighter의 타입이 일치해야한다.! fighter가 fighterable 로 형변환가능 업캐스팅!!!

Fightable fight = new Fighter이 성립된다

오버라이딩 규칙 → 조상보다 접근제어자가 좁으면 안된다.

인터페이스로 다형성이 가능하다.!
한부모 여러 자식!! 다형성.! 추상화!
반환타입이 파이터블일때는 파이터블을 구현한 객체를 반환한다.

-두대상 간의 연결 대화 소통을 돕는 중간 열학을 한다.
-변경에 유리
-선언(설계)와 구현을 분리시킬 수 있게한다.
기계의 껍데기가 인터페이스
사람- 윈도우 (GUI)그래픽유저인터페이스- 컴퓨터

-껍데기와 알맹이를 분리가능한다.

-인터페이스 덕분에 B가 변경되어도 A는 안바꿀수 있게 된다.

고객 → 진동벨(인터페이스) → 아줌마호출 아줌마1,아줌2,아줌3
리스트의 경우 for문을 사용해서 어떤 값을 뽑아내고 그 값을 변수를 하나 설정해서 add해주고
그 값을 뽑아내서 return 해주면 된다. for문안에 return 금지!
스트림을 쓰는 이유 : 병렬처리가 가능하고 유지보수가 쉽다.
병렬처리: 여러가지 일을 한번에 수행하는 것.
System.*exit*(0); 정상종료!
System.*exit*(1); 강제종료!