IT/솔루션) Power Java

Power JAVA 10장 ) 상속 - LAB

돔찌 2019. 5. 12. 17:50

<2016. 10. 11. 12:23>

Power JAVA 10장 ) 상속 - LAB

 

==========Human.java======================
//1. 클래스 Human을 정의하여 보자. 다음과 같은 필드를 작성하라.
package LAB;
class Human {
	String name;
	int age;
	//2. 생성자를 작성하여 보자.
	public Human(String name, int age) {
		this.name = name;
		this.age = age;
	}
	//3. 각 필드에 대하여 접근자와 설정자를 작성하여 보자.
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	//4. 객체의 현재 상태를 나타내는 문자열을 반환하는 toString()을 작성하여 보자. 객체의 현재값을 반환한다.
	public String toString() {
		return name +","+ age;
	}
	/* 5. 클래스 Human 안에서 main() 메소드를 추가하여서
  * ("춘향",18세), ("몽룡",21세), ("사또",50)에 해당하는 객체를 생성하여 보라.
  * 각 객체의 toString을 호출하여서 출력하여 보라.
  */
	public static void main(String[] args) {
		Human person1 = new Human("춘향",18);
		Human person2 = new Human("몽룡",21);
		Human person3 = new Human("사또",50);
		System.out.println(person1.toString());
		System.out.println(person2.toString());
		System.out.println(person3.toString());
	}
}
====================Student.java============================
package LAB;
//6. 클래스 Human을 상속하여서 Student 클래스를 작성하여 보자. 다음과 같은 필드가 추가된다.
class Student extends Human {
	String major;
	//7. 다음과 같은 생성자를 정의하여 보자. 부모 클래스의 생성자를 호출하여 보자.
	public Student(String name,int age,String major) {
		super(name,age);
		this.major = major;
	}
	//8. 각 필드에 대하여 접근자와 변경자를 작성하여 보자.
	public void setName(String name) {
		this.name = name;
	}
	public String getName() {
		return name;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public int getAge() {
		return age;
	}
	public void setMajor(String major) {
		this.major = major;
	}
	public String getMajor() {
		return major;
	}
	//9. 객체의 현재 상태를 나타내는 문자열을 반환하는 toString()을 작성하여 보자.
	//   부모의 toString()을 호출하여 문자열을 만들어라.
	public String toString() {
		return super.toString() +","+ this.major;
	}
	/* 10. 클래스 Student 안에서 main() 메소드를 추가하여서
  * ("명진", 21세, "컴퓨터") , ("미현", 22세, "경영") , ("용준", 24세, "경제") 에 해당하는 객체를 생성하여 보라.
  * 각 객체의 toString을 호출하여서 출력하여 보라.
  */
	public static void main(String[] args) {
		Student person4 = new Student("명진", 21, "컴퓨터");
		Student person5 = new Student("미현", 22, "경영");
		Student person6 = new Student("용준", 24, "경제");
		System.out.println(person4.toString());
		System.out.println(person5.toString());
		System.out.println(person6.toString());
	}
}
/* 11. Human과 Student 클래스의 생성자들이 어떤 순서로 호출되는지를 화면에 출력하여 보라.
  - 부모클래스인 Human의 생성자를 통해 Human의 인스턴스를 만든 후, Student의 생성자를 통해 Student의 인스턴스를 만든다. */
/* 12. name과 age의 접근 지정자를 private, protected, public으로 변화시키면서 Student 클래스에서 접근하여 보라.
 *   - Human클래스의 필드를 private로 바꿨을때, super(name,age)와 같이 부모클래스의 생성자를 통해 접근할 경우 접근이 가능,
 *      자식클래스의 main메소드 안에서 person.name = "XX" 와 같이 직접접근의 경우 제한되어 에러가 발생
 *  - 그러나 protected나 public 의 경우는 에러없이 접근 가능.
 */