DOM 실습
http://jyheo.github.io/javascript/exercise3.html추가 버튼을 눌렀을 때 이미 동일한 이름의 동물이 존재하면 alert('동일한 이름이 존재합니다!')라고 경고창을 나타내고 추가하지 않도록 코드 추가
목록을 선택하면 아래와 같이 나타다도록 코드 추가
이 블로그는 사용하지 않습니다. jyheo.github.io나 github.com/jyheo로 방문해주세요. --- 한성대학교 컴퓨터공학부 허준영 교수 강의 블로그입니다. 강의 자료나 학생들이 참고할 문서, 웹 사이트 링크 등을 제공합니다.
| Modifier | Class | Package | Subclass | World |
|---|---|---|---|---|
public |
Y | Y | Y | Y |
protected |
Y | Y | Y | N |
| no modifier | Y | Y | N | N |
private |
Y | N | N | N |
class FoolFish extends Fish { // 상속
FoolFish(String name, String shape) {
super(name, shape); // 부모 클래스의 생성자를 부름, super는 부모 클래스를 가리킴
}
public void move(int width, int height) { // 메소드 오버라이딩(overriding), 원래 메소드는?
x++; // Fish의 x, y가 private int였다고 지금은 protected int로 바뀌어 있음. 왜?
y++;
if (x >= width)
x = 0;
if (y >= height)
y = 0;
}
}
public class Lake10 {
private int width;
private int height;
private Fish[] fishes;
public Lake10(int width, int height) {
this.width = width;
this.height = height;
fishes = new Fish[10];
for (int i = 0; i < fishes.length; i++) {
if (i % 2 == 0)
fishes[i] = new Fish("Even", "<#--<");
else
fishes[i] = new FoolFish("Odd", "<$--<"); // Fish 레퍼런스가 FoolFish를 가리킨다?
// 업 캐스팅(upcasting)
}
}
public void moveFish() {
for (Fish f : fishes) // f가 Fish 객체일 때도 있고, FoolFish일 때도 있는데,
f.move(width, height); // move()는 누구의 move()가 불리는가?
} // 동적 바인딩(dynamic binding)