class 자식클래스명 extends 부모클래스명 { ... ... }
class Tv {
boolean power; // 전원on/off, 초기화 false(off)인 상태
int channel; // 채널
void power() {
power = !power; //**홀수번 호출: true(켜진 상태)
}
void channelUp() {++channel;} // 앞이든 뒤든 단독이므로 상관없다.
void channelDown() {--channel;}
}
class SmartTv extends Tv{ // Tv클래스(부모)를 상속받는 SmartTv클래스(자식)
boolean caption; // 자막on/off, 초기화 false(off)인 상태
void displayCaption(String text) {
if(caption) { // 자막이 on(true)일 때 매개변수로 받은 text를 출력
System.out.println(text);
}
else { // 자막 off(false)일 때 nothing 출력
System.out.println("nothing");
}
}
}
public class Ex7_01 {
public static void main(String[] args) {
// 상속
SmartTv stv = new SmartTv();
stv.channel = 10;
stv.channelUp(); // 인스턴스메소드 호출 방법 잊지 말기!
System.out.println(stv.channel);
stv.displayCaption("Hello"); // false(off)이기에 출력x
stv.caption = true; // 자막on
stv.displayCaption("Hello");
}
}
11
nothing
Hello
class Point3D {
int x;
int y;
int z;
}
...
...
Point3D p = new Point3D();
class Point {
int x;
int y;
}
class Point3D extends Point {
int z;
}
...
...
Point3D p = new Point3D();
-> 같다!!!
예)
class Car {
Engine e = new Engine(); // Engine클래스를 포함한다.
Door[] d = new Door[4]; // 요것도!
}
class Circle {
int x;
int y;
int r;
}
...
...
Circle c = new Circle();
class Point {
int x;
int y;
}
class Circle {
Point p = new Point();
int r;
}
...
...
Circle c = new Circle();
저장공간이 3개인 건 같다!
InheritenceTest
class MyPoint{
int x;
int y;
}
class Circle extends MyPoint{//상속
int r;
}
class Circle2{//포함
// MyPoint p = new MyPoint();//1.바로 초기화 하거나
MyPoint p;
int r;
//***2. 바깥에 있는 클래스의 생성자 안에서 초기화 해주거나
public Circle2() {
p = new MyPoint();
}
}
public class InheritenceTest {
public static void main(String[] args) {
Circle c = new Circle();
c.x = 1;
c.y = 2;
c.r = 3;
System.out.println("c.x= "+c.x);
System.out.println("c.y= "+c.y);
System.out.println("c.r= "+c.r);
Circle2 c2 = new Circle2();
c2.p.x = 4;
c2.p.y = 5;
c2.r = 6;
System.out.println("c2.p.x= "+c2.p.x);
System.out.println("c2.p.y= "+c2.p.y);
System.out.println("c2.r= "+c2.r);
}
}
c.x= 1
c.y= 2
c.r= 3
c2.p.x= 4
c2.p.y= 5
c2.r= 6
: A는 B이다.
: A는 B를 가지고 있다.
Circle클래스
예제의 경우, 원(Circle)이 점(Point)을 갖는 것이므로, 포함이다.