상속
Java 프로그래밍 - 상속
class Person {
String name;
int age;
public int a1;
private int a2;
Person() {}
Person(String name, int age) {
this.name = name;
this.age = age;
}
public void printInfo() {
System.out.println("Person.printInfo");
System.out.println("name: " + name);
System.out.println("age: " + age);
}
}
// Student 클래스 - Person 상속, 접근제어자 확인
class Student extends Person {
Student() {
a1 = 1;
// a2 = 2;
}
}
// Student 클래스 - Person 상속, super 사용, 오버라이딩
class Student2 extends Person {
String name;
int stdId;
// super, super()
Student2(String name, int age, int stdId) {
this.name = name;
// super.name = name;
this.age = age;
// super(name, age);
this.stdId = stdId;
}
// 오버라이딩
public void printInfo() {
System.out.println("Student2.printInfo");
System.out.println("name: " + name);
System.out.println("age: " + age);
System.out.println("stdId: " + stdId);
}
}
public class Main {
public static void main(String[] args) {
// Test code
// 1. 상속
System.out.println("=============");
Student s1 = new Student();
s1.name = "a";
s1.age = 25;
s1.printInfo();
// 2. super, super(), 오버라이딩
System.out.println("=============");
Student2 s2 = new Student2("b",32, 1);
s2.printInfo();
}
}
=============
Person.printInfo
name: a
age: 25
=============
Student2.printInfo
name: b
age: 32
stdId: 1
// Practice1
// 아래의 클래스 및 상속 관계에서 Test code를 수정하지 않고
// Cat 클래스 내에서 super 또는 super()를 이용하여
// "고양이 입니다." 가 출력될 수 있도록 변경해보세요.
class Animal {
String desc;
Animal() {
this.desc = "동물 클래스 입니다.";
}
Animal(String desc) {
this.desc = desc;
}
public void printInfo() {
System.out.println(this.desc);
}
}
class Cat extends Animal {
String desc;
Cat() {
this.desc = "고양이 입니다.";
// super.desc = "고양이 입니다.";
// super("고양이 입니다.");
}
}
public class Practice1 {
public static void main(String[] args) {
// Test code
Cat cat = new Cat();
cat.printInfo();
}
}
동물 클래스 입니다.
// Practice2
// 아래 클래스와 상속 관계에서
// Test code를 수정하지 않고, 아래와 같이 출력될 수 있도록 오버라이딩 해보세요.
// 빵빵!
// 위이잉!
// 빵빵!
// 삐뽀삐보!
class Car {
Car(){}
public void horn() {
System.out.println("빵빵!");
}
}
class FireTruck extends Car {
public void horn() {
super.horn();
System.out.println("위이잉!");
}
}
class Ambulance extends Car {
public void horn() {
super.horn();
System.out.println("삐뽀삐뽀!");
}
}
public class Practice2 {
public static void main(String[] args) {
// Test code
FireTruck truck = new FireTruck();
truck.horn();
Ambulance amb = new Ambulance();
amb.horn();
}
}
빵빵!
위이잉!
빵빵!
삐뽀삐뽀!
Leave a comment