LJ

자바 객체 선언과 생성 본문

IT/자바

자바 객체 선언과 생성

짱준재 2022. 9. 27. 14:37

객체 선언

 

클래스명 + 객체변수명 ;

 

 

객체 생성

 

객체 변수명 = new 클래스명;

 

 

객체 선언과 생성을 동시에

 

클래스명 + 객체변수명 = new 클래스명;

 

여기서 업캐스팅한 경우

 

부모클래스명  + 객체 변수명 =  new 자식클래스명;

-> 자식 클래스의 객체 주소를 부모 클래스 타입으로 변환 ->부모 클래스의 맴버만 접근 가능

 

 

 

# 상속관계에서 객체생성 방법

## 상속관계에서 객체 생성 방법

  • 객체 생성 : new 연산자와 생성자 메서드 활용하여 객체 생성.
  • 상속관계(부모-자식)에서 객체 생성 : 나(하위 클래스)를 기준으로 나라는 존재가 만들어지기 전에, 부모(상위 클래스)가 먼저 만들어져야 한다.
  • 간접 이용 : 상위(부모)클래스를 이용하는 방식 (하위 클래스의 동작 방식을 모를 때, class 파일(=실행파일)만 있고 java 파일(=소스파일)은 없을 때 사용). 이때 하위 클래스를 접근할 수 없음, 재정의(오버라이드)를 이용하면 가능 함.
Animal dog = new Dog();
dog.eat();

Animal cat = new Dog();
cat.eat();
cat.night();
  • 직접 이용 : 상위(부모)클래스를 이용하지 않는 방식.
Dog dog = new Dog();
dog.eat();

Cat cat = new Cat();
cat.eat();
cat.night();

##상속관계에서 객체 생성 방법 (실습)

  • 모든 클래스는 상속을 받지 않으면 기본적으로 루트 클래스인 Object 클래스(최상위 클래스)를 상속받음.
  • 다형성 : 상위(부모) 클래스가 하위(자식) 클래스에게 동일한 메시지를 보내면 하위 클래스가 서로 다르게 동작하는 것. (상속 관계에서 업캐스팅 시 적용)
public class Animal extends Object {
	public void eat() {
		System.out.println("?");	// 포괄적, 추상적.
	}
	
	public Animal() {
		super();	// new Object();
	}
}
public class Dog extends Animal {
	// 이름, 나이, 종 등 : 상태정보 존재.
	
	// 재정의(override)
	public void eat() { 
		System.out.println("멍멍이 처럼 먹는다."); 
	}	
	
	public Dog() {
		super();	// new Animal();
	}
}
public class Cat extends Animal {
	// 이름, 나이, 종 등 : 상태정보 존재.
	
	@Override
	public void eat() { 
		System.out.println("고양이 처럼 먹는다."); 
	}
	
	
	public void night() {
		System.out.println("고양이는 밤에 눈에서 빛이 난다.");
	}
	
	public Cat() {
		super();	// new Animal();
	}
}
public class TPC22 {
	public static void main(String[] args) {
		// 재정의(오버라이드) 유무에 따라 하위(자식)클래스의 메서드 구동 가능 여부가 결정됨.
		// 1. 직접 이용
		Dog dog = new Dog();
		dog.eat();
		
		Cat cat = new Cat();
		cat.eat();
		cat.night();
		
		// 2. 간접 이용	: 상속관계가 선행되어야 사용 가능.
		Animal d = new Dog();	// UpCasting (자동 형 변환)
		d.eat();
		
		Animal c = new Cat();
		c.eat();
		((Cat)c).night();	// DownCasting (강제 형 변환)
	}
}

-출처--https://dlagusgh1.tistory.com/862

'IT > 자바' 카테고리의 다른 글

자바 업 캐스팅 다운 캐스팅  (0) 2022.09.26
자바 is-a has-a  (0) 2022.09.26
자바 Array list  (0) 2022.09.26
자바 향상된 for 문  (0) 2022.09.26
자바 static  (0) 2022.09.26
Comments