상속,포함관계
package javajungsuck;
public class C9포함 {
}
//상속관계 is a
//포함관계 has a
//어떨때 포함,상속을 구별해서 써야하나 ?
//문장을 만들어보면 좋다.
//원은 점이다 (is a /상속) x 꼭필요한 경우에만 사용
//원은 점을 가지고 있다(has a /포함) o 대부분의 경우 사용
class Car {
//포함관계 클래스를 참조변수로 갖는것
//Car가 Door과 Circle을 포함하고 있다.
Door door = new Door();
Circle circle = new Circle();
}
class Door{
int door = 4;
}
class Circle{
int circle = 4;
}
단일상속
package javajungsuck;
public class C10단일상속 {
public static void main(String[] args) {
//object 클래스는 모든 객체의 조상 11개의 항목 상속받음 toString, hashcode ~~~~~
//c10단일상속처럼 아무것도 상속받지 않는 클래스는 자동적으로 object클래스를 상속받게 된다.
//to String(); 클래스의 이름과 주소값 나타내줌
A a = new A();
B b = new B();
C c = new C();
//a의 주소값 두문장이 같다는 걸 알고있어야한다.
System.out.println(a.toString()); //javajungsuck.A@6f75e721
//a의 주소값
System.out.println(a); //javajungsuck.A@6f75e721
}
}
//자바는 단일상속만 허용한다. //c++은 다중상속허용
class A {//extends B,C{ //다중상속 오류가난다.
int a;
}
class B{
int b;
}
class C{
int c;
}
super
package javajungsuck;
public class C12참조변수this {
public static void main(String[] args) {
Vod bo = new Vod();
bo.seper();
}
//참조변수super
//참조변수 super는 객체자신을 가리키는 참조변수 , 생성자 내에서만 존재
//조상의 멤버를 자신의 멤버와 구별할 때 사용
}
class Vo {
int x = 10 ;
}
class Vod extends Vo {
//Vod를 상속받고 x가 겹친다.
int x = 20 ; //vod x를 없애면 x this.x super.x 모두 상속받은 vo의 x를 가르킨다.
int y = 30;
void seper() {
System.out.println(x); //20
System.out.println(this.x); //20
System.out.println(super.x);//10
}
}
super()
package javajungsuck;
public class C12this생성자 {
public static void main(String[] args) {
//super()
//조상의 생성자를 호출할 때 사용
//조상의 멤버는 조상의 생성자를 호출해서 초기화
//super() 생성자 규칙
//중요!!!!1.생성자의 첫줄에 반드시 생성자를 호출해야 한다. 그렇지 않으면 컴파일러가 생성자의 첫줄에 super를 삽입한다.
}
}
class man {
int x, y;
man(int x, int y){
super();//object 클래스의 생성자 호출
this.x = x;
this.y = y;
}
}
class man1 extends man{
int z;
man1(int x, int y, int z) {
super(x,y); //super로 상위클래스항목 x,y초기화
this.x = x;
this.y = y;
this.z = z;
}
}
'개발공부 2023 ~03~13' 카테고리의 다른 글
접근제어자(static,abstract,final) (0) | 2023.03.28 |
---|---|
변수초기화, 오버라이딩(메소드 재정의), (0) | 2023.03.28 |
(중복메소드(오버로딩) , 기본생성자 및 this, this()) (0) | 2023.03.26 |
변수와 메서드(인스턴트, 클래스, 참조형 매개변수, 메서드) (0) | 2023.03.26 |
객체지향 (클래스와 객체) (0) | 2023.03.23 |