분류 전체보기

    인터페이스(100% 다형성 보장) & final, static

    인터페이스 1. 인터페이스는 구현메서드는 포함하지 않으며, 100% 추상메소드로 이루어져 있다. 인터페이스는 장애객체때문에 RemoCon rc = new RemoCon(); 객체 생성불가!! public interface RemoCon { public int MAXCH=100; public static final int MINCH=1; public void chUp(); public void chDown(); public void internet() ; } 2. 인터페이스 내에 있는 필드 앞에 static이 붙는 이유 public static final int MAXCH = 100; public static final int MINCH=1; →인터페이스는 객체 생성이 불가하므로 구현클래스에서 객체생성없이..

    추상클래스(일부 다형성 보장)

    추상클래스 1. 해당 클래스가 추상메서드를 1개라도 가지고 있으면, 그 클래스는 추상클래스(abstract class Animal)가 된다. 추상클래스는 불완전한 클래스이기 때문에 Animal ani = new Animal(); 객체생성불가!!! public abstract class Animal { public abstract void eat(); // 추상 메서드 public void move() { // 구현메서드 System.out.println("무리를 지어서 이동한다."); } } 2. 부모클래스가 추상메소드를 포함하고 있는 경우 그 추상메소드는 자식클래스에서 반드시 오버라이딩(Overring)되어야 한다. public class Dog extends Animal { // eat() { ? }..

    다형성

    다형성

    1. 다형성 조건 1. 상속(extends) 또는 구현(implements) 2. 오버라이딩(Overring) 3. 부모타입 r = new 자식객체 (upcasting) 또는 인터페이스 r = new 구현클래스 2. 다형성 인수 public static void display (Animal r) { r.eat(); } Arnimal r의 매개변수로 new Dog(); new Cat(); new Horse(); new Cow(); 등 Animal의 모든 자식객체(하위클래스)를 받을 수 있다. 3. 다형성 배열 (서로 다른 자식객체를 담을 수 있다.) public class TPC24 { public static void main(String[] args) { Animal[] ani=new Animal[2]..

    부모와 자식간에는 형변환이 된다. & 나보다 부모가 먼저야

    부모와 자식간에는 형변환이 된다. & 나보다 부모가 먼저야

    1. 형변환방식 1) Animal ani = new Cat(); →이렇게 객체를 변환하는 방식을 upcasting이라 한다. →부모 =(자동형변환)자식 → ani.eat(); // 자식이 부모타입으로 형변환 되었더라도 오버라이딩 (overring)된 경우 자식객체Cat의 eat();이 호출된다. →"고양이 처럼 먹다." 출력 →ani.night(); 자식객체가 부모타입으로 형변환 됐으므로 부모타입이 가지고 있지 않은 night()메서드는 사용불가 →강제적 형변환 필요 2) Cat cat =(Cat)ani; →부모타입에서 자식타입으로 객체를 변환하는 방식을 downcasting이라 한다. → cat.night(); //사용가능 →밤에 눈이 빛난다. 2. 나보다 부모가 먼저인 이유 Animal d = new..