[JAVA] 오버 라이딩과 형변환

행복한 콩🌳·2023년 2월 27일
0

JAVA

목록 보기
18/26
  • 자바에서 업캐스팅이 되는 이유는 하위 클래스에서 상위 클래스를 내포하기 때문
  • 하위클래스 생성될 때 상위 클래스의 생성자가 먼저 생성됨
  • 하위 클래스는 상위 클래스로 형 변환 될 수 있다.

오버로딩 -> 이름이 같은 메서드 여러 개
오버라이딩 -> 상속 받아서 기능 추가

자바는 기본적으로 모두 가상 메서드

  • 프로그램에서 어떤 객체의 변수나 메서드의 참조는 그 타입에 따라 이루어 짐
  • 가상 메서드의 경우는 타입과 상관없이 실제 생성된 인스턴스의 메서드가 호출 되는 원리

명령어 set이 호출될 때는 항상 같은 곳을 가르킨다 -> 코드 영역

메서드 바인딩 -> 어느게 불리느냐

다형성

  • 하나의 코드가 여러가지 자료형으로 구현되어 실행되는 것
  • 객체지향 프로그래밍의 유연성, 재활용성, 유지보수성에 기본이 되는 특징임
package inherient;

public class Animal {
    public void move(){
        System.out.println("동물은 움직입니다.");
    }
}

class Human extends Animal{
    public void move(){
        System.out.println("사람은 두발로 걷습니다.");
    }
}

class Tiger extends Animal{
    public void move(){
        System.out.println("호랑이가 네발로 뜁니다.");
    }
}

class Eagle extends Animal{
    public void move(){
        System.out.println("독수리가 하늘");
    }
}
class AnimalTest{
    public static void main(String[] args){
        AnimalTest test = new AnimalTest();
        test.moveAnimal(new Human());
        test.moveAnimal(new Tiger());
        test.moveAnimal(new Eagle());

        Animal animal = new Human();
        // 36줄과 동일
    }

    public void moveAnimal(Animal animal){
        animal.move();
    }
}

하나의 클래스를 상속 받은 여러 클래스가 있는 경우
각 클래스 마다 같은 이름의 서로 다른 메서드를 재정의 함

profile
매일매일 조금씩 모여 숲이 되자🐣

0개의 댓글