Java(Class2)_Polymorphism_01

2024. 11. 1. 14:48·Java/기초 내용 정리

2024-11-01

 

 

 

 

 

야옹야옹~~~

야옹야옹~~~

 

package polymorphism;

/*
 *  다형성(polymorphism)?
 *  - 객체지향 프로그램의 4대 특징 중 하나.
 *  	==> 상속과 연관성이 많음.
 *  - 다형성의 사전적 의미.
 *  	==> 같은 종의 생물이지만 모습이나 특징이 고유의 
 *  		성질을 가지고 있는 것을 말함.
 *  - 여러가지 모습으로 해석될 수 있는 형태를 말함.
 *  - 여러가지 형태를 가질 수 있는 능력을 말함.
 *  - 하나의 메서드나 클래스가있을 때 이것들이 다양한 방법으로
 *    동작하는 것.
 *    - 하나의 사물(객체)을 다양한 타입으로 선언하고 이를
 *    	이용할 수 있는 성질.
 *    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
 *    - 하나의 참조변수로 여러 타입의 객체를 참조할 수 있는 것.
 *    	==> 조상타입의 참조변수로 자손타입의 객체를 다룰 수 있는
 *    		것이 다형성의 특징. 단, 조상클래스에서 상속을 받은 
 *    		멤버들에만 접근할 수 있고, 자손클래스에서 만들어진
 *    		멤버들에는 접근할 수 없음.
 *    		예) 조상타입의 참조변수로 자식의 멤버를 호출.
 *    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
 *    - 조상타입의 참조변수로 자손타입의 인스턴스를 참조할 수 있지만,
 *      반대로 자손타입의 참조변수로 조상타입의 인스턴스를 참조를 할 
 *      수는 없음.
 *    - 다형성을 사용하는 이유.
 *    	1. 상속과 메서드 재정의를 활용하여 확장성있는 프로그램을
 *    	   만들 수 있음.
 *    	2. 상위클래스에서는 공통적인 부분을 제공하고, 하위클래스
 *    	   에서는 각 클래스에 맞는 기능 구현.
 *    	3. 여러 클래스를 하나의 타입(상위클래스)으로 핸들링
 *    	   할 수 있음. 
 */

public interface Animal {

	void sound();
	
}

 

package polymorphism;

public class Animal1 {

	void sound() {
		
		System.out.println("소리를 냅니다.");
	}
}

 

package polymorphism;

public class Cat implements Animal {

	@Override
	public void sound() {
	
		System.out.println("야옹야옹~~~");
	}
	
	void prn() {
		
		System.out.println("출력 메세지입니다.!!!");
	}
}

 

package polymorphism;

public class Tiger extends Animal1 {

	@Override
	void sound() {
	
		System.out.println("어흥어흥~~~");
	}
}

 

package polymorphism;

public class Animal_01 {

	public static void main(String[] args) {
		
		Cat cat = new Cat();
		
		cat.sound();
		
		System.out.println();
		
		//  다형성을 이용하여 객체 생성
		Animal animal = new Cat();		//  업 캐스팅 ==> Cat class 객체 생성
		
		animal.sound();
		
		//animal.prn();		//  자식클래스의 메서드는 다형성 불가능
		
		//Cat cat = new Animal();
		
		//Tiger tiger = (Tiger)new Animal1();		//  다운 캐스팅
		//  보모클래스가 자식클래스 보다 크기 떄문에 형 변환"(Tiger)" 해야 함.
		
		/*
		 *  다운 캐스팅 : 조상타입의 참조변수를 자손타입의 참조변수로 변환하는 것.
		 *  		  반드시 형변환(casting)을 해주어야 함.
		 *  업 캐스팅 : 자손타입의 참조변수를 조상타입의 참조변수로 변환하느 것.
		 *  		  형변환(casting)을 안 해주어도 됨.
		 */
	}
}

'Java > 기초 내용 정리' 카테고리의 다른 글

Java(Class2)_Polymorphism_03  (0) 2024.11.01
Java(Class2)_Polymorphism_02  (0) 2024.11.01
Java(Class2)_Exam_03  (0) 2024.10.31
Java(Class2)_Exam_02  (0) 2024.10.31
Java(Class2)_Exam_01  (0) 2024.10.31
'Java/기초 내용 정리' 카테고리의 다른 글
  • Java(Class2)_Polymorphism_03
  • Java(Class2)_Polymorphism_02
  • Java(Class2)_Exam_03
  • Java(Class2)_Exam_02
mw41817
mw41817
일생의 개발 기록 저장소
  • mw41817
    IT 개발 일지
    mw41817
    • Index (487)
      • HTML (36)
        • 기초 내용 정리 (36)
      • CSS (29)
        • 기초 내용 정리 (29)
      • JavaScript (60)
        • 기초 내용 정리 (60)
      • JQuery (38)
        • 기초 내용 정리 (38)
      • Java (232)
        • 기초 내용 정리 (232)
      • JSP (46)
        • 기초 내용 정리 (46)
      • Spring, Boot (31)
        • 기초 내용 정리 (31)
      • DB (5)
        • Oracle SQL (5)
      • Code WorkBook (6)
        • programmers (6)
        • Baekjoon (0)
      • 기타 (1)
        • 유용한 사이트 (3)
  • 전체
    오늘
    어제
  • 글쓰기 관리
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 카테고리
    • 주인장 GitHub
  • 공지사항

  • 인기 글

  • 태그

    html #코딩 #프로그래밍 #기초
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
mw41817
Java(Class2)_Polymorphism_01
상단으로

티스토리툴바