본문 바로가기

JAVA

java #문제풀기3 상속문제

03.

class Apple { }
class Fox { }
public class Test03 {
	public static void main(String[] args) {
		Apple a = new Apple();
		//System.out.println(a instanceof Fox);

	}

}

 

오류 instanceof의 왼쪽에는 참조변수를 오른쪽에는 타입(클래스 명)이 피연산자로 위치한다. 
하지만 문제에서는 왼쪽에 참조변수가 아닌 오른쪽과 같은 클래스 명을 입력했기 때문에 에러가 남

 


05.

package Test0506;
class Fruit {
	String color;
	
	public Fruit(String color) {
		this.color = color;
	}
}


public class Test05 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}

class Apple2 extends Fruit {
	double weight;
	
	Apple2(double weight) {
	this.weight = weight;
	}
}

public을 쓸 수 있는 클래스는 파일명과 일치하는 클래스 뿐임!!

프로그래밍 문제
01. 다음 표와 실행 결과를 참고해 자식 클래스인 Circle과 ColoredCircle을 작성하시오.
그리고 Circle과 ColoredCircle 객체의 show() 메서드를 호출하는 테스트 프로그램도 작성하시오.

package Test0506;

class Mothers {
	int radius;
	String color;	
}
class Circle extends Mothers{
	Circle(int radius) { // 매개변수가 있는 생성자
		this.radius = radius; // 생성자 this가 중요!!
	}	 
	void show() {
		System.out.println("반지름이 " + radius + "인 원이다.");		
	}	
}
class ColoredCircle extends Mothers{
	ColoredCircle (int radius, String color) { // 매개변수가 있는 생성자
		this.radius = radius; // 생성자 this가 중요!!
		this.color = color; // 생성자 this가 중요!!			
	}
	void show() {
		System.out.println("반지름이 " + radius + " 인 " + color + " 원이다.");
	}			
}
public class PTest01 {

	public static void main(String[] args) {
		Circle c = new Circle(5); // 인스턴스를 생성하는 코드
		ColoredCircle e = new ColoredCircle(10,"빨간색");
		c.show();
		e.show();
	}
}



부족했던 개념: 생성자!!
생성자는 인스턴스가 생성될 때 호출돠는 '인스턴스 초기화 메서드' 이다. 따라서 인스턴스 변수의
초기화 자업에 주로 사용되며, 인스턴스 생성 시에 실행되어야 할 작업을 위해서도 사용된다.
생성자의 조건
1. 생성자의 이름은 클래스의 이름과 같아야 한다.
2. 생성자는 리턴 값이 없다.
ex) class Card {
  Card() {  // 매개변수가 없는 생성자.
}
}
Card(String k, int num) { // 매개변수가 있는 생성자.
}
}
Card클래스의 인스턴스를 생성하는 코드를 예로 들어, 수행되는 과정을 단계별로 나누기.
Card c = new Card();
1. 연산자 new에 의해서 메모리(heap)에 Card클래스의 인스턴스가 생성된다.
2. 생성자 Card()가 호출되어 수행된다.
3. 연산자 new의 결과로 생성된 Card인스턴스의 주소가 반환되어 참조변수 c에 저장된다.

02. 다음 표와 실행 결과를 참고해서 답하시오. show() 메서드는 객체의 정보를 문자열로 반환한다.

부족했던 개념: 모든 필드를 초기화 하는 생성자
에러: Implicit super constructor Person() is undefined. Must explicitly invoke another constructor