자바 또또 반복(객체지향)_3

bitna's study note·2022년 10월 30일
0

자바

목록 보기
112/119

10월 30일

1.상속
(1)기존의 클래스로 새로운 클래스를 작성하는 것(코드의 재사용).
(2)두 클래스를 부모와 자식으로 관계를 맺어주는 것.
(3)자손의 조상의 모든 멤버를 상속받는다.(생성자,초기화블럭 제외)
(4)자손의 멤버개수는 조상보다 적을수 없다.(같거나 많다.)
(5)자손의 변경은 조상에 영향을 미치지 않는다.
반대로, 부모클래스에 변경이 일어나면 자손 클래스는 영향을 받는다.

class Parent{}
class Child extends	Parent{}

2.포함관계
클래스의 멤버로 참조변수를 선언 하는 것

class Point{
	int x;
    int y;
}
class Circle{
	Point c = new Point();
    int r;
}

작은 단위의 클래스를 만들고, 이것들을 조합해서 클래스를 만드는 형식
이렇게 구성하면 복잡도가 줄어 든다.

3.상속 관계 : ~은 ~이다.
포함 관계:~은 ~을 가지고 있다.
대부분의 경우 90%이상이 포함관계를 쓴다. 꼭 필요한 경우만 상속을 쓴다.

4.단일 상속
(1)자바는 단일 상속만 허용한다.
(2)2개의 클래스를 상속 받고 싶을시 둘중 비중이 높은 클래스 하나만 상속관계로,
나머지는 포함관계로 한다.

5.Object 클래스
(1)모든 클래스의 조상이다.
(2)부모가 없는 클래스는 자동적으로 Object 클래스를 상속받게 된다.
(컴파일러가 자동으로 Object 클래스를 상속받게함)
(3)모든 클래스는 Object클래스에 정의된 11개의 메서드를 상속받는다.

6.오버라이딩
(1)상속받은 조상의 메서드를 자식 클래스에서 재정의하는것.나한테 맞게 변경하는것.
(2)선언부는 변경이 불가하며 구현부만 변경이 가능하다.

7.오버라이딩 조건
(1)선언부가 조상클래스의 메서드와 일치해야 한다.
(2)접근제어자가 조상클래스의 메서드보다 좁은 범위로 변경할수 없다.
(3)예외는 조상 메서드보다 많이 선언할 수 없다.

8.오버로딩 과 오버라이딩
오버로딩은 이름은 같지만 기존에 없는 새로운 메서드를 정의하는 것
오버라이딩은 부모로부터 상속받은 메서드의 내용을 자식클래스가 자신에게 맞게 변경 하는 것

9.참조변수 super
(1)객체 자신을 가르키는 참조변수.
(2)인스턴스 메서드(생성자)내에만 존재.static메서드내에서 사용불가.
(3)조상의 멤버를 자신의 멤버와 구별 할때 쓰임.

10.super()
(1)조상의 생성자를 호출할때 사용한다.
참고로, 상속할때 생성자와 초기화블럭은 상속이 안된다.
(2)조상의 멤버는 조상의 생성자를 호출해서 초기화

class Point{
	int x;
    int y;
    
    Point(int x, int y){
      this.x=x;
      this.y=y;
    }
}

class Point3D extends Point{
	int z;
    
    Point3D(int x, int y, int z){
    	super(x,y); //조상의 생성자Point를 호출하여 초기화
        this.z=z; //자식멤버는 자식인 자신이 초기화
    }
}

(3)생성자의 첫 줄에 반드시 생성자를 호출해야 한다.
그렇지 않으면 컴파일러가 생성자의 첫줄에 super(); 를 자동으로 삽입.

11.패키지
(1)서로 관련된 클래스의 묶음.
(2)패키지는 폴더이며 폴더안에 폴더를 넣을수 있듯이 패키지안에 하위패키지를 넣을수 있음.
(3)패키지 선언이 없으면 이름없는 패키지에 속하게 된다.

12.import문
(1)클래스를 사용할 때 패키지이름을 생략할 수 있다.
(2)컴파일러에게 클래스가 속한 패키지를 알려준다.
같은 이름의 클래스가 있을수 있기때문에 어떤패키지에 속하는지 알려줘야 컴파일러가 헷갈려 하지 않음.

13.static import문
static멤버를 사용할 때 클래스 이름을 생략할 수 있게 해준다.

import static java.lang.System.out
import static java.lang.Math.random

System.out.println(Math.random());
out.println(random()); //import로 생략함.

14.제어자
(1)클래스와 클래스의 멤버에 부가적인 의미부여, 형용사와 같은 역할
(2)하나의 대상에 여러 제어자를 사용할수 있으나,
단, 접근제어자는 4가지중 1개만 쓸수 있음.

15.final
final+클래스: 조상이 될수 없다. 상속할수 없는 마지막 자손클래스가 됨.
final+변수: 값을 변경할수 없는 상수가됨
final+메서드: 변경될 수 없는 메서드라는 의미로 즉,오버라이딩이 안됨.

16.abstract
추상의, 미완성됨.
메서드 중에 구현부(몸통)이 없는 메서드가 있는데 이걸 '추상메서드' 라고 부른다.
추상메서드를 가지고 있는 클래스를 '추상클래스'라고 한다.

'추상메서드'-미완성 메서드이다.구현부가 없는 메서드.
'추상클래스'-미완성 클래스이다.미완성 메서드를 가지고 있기 때문.그리고 객체를 만들수 없다. 왜?미완성 클래스이기 때문!

그렇다면 언제 객체를 생성가능한가? 추상클래스를 상속받아서 완전한클래스를 만든후에 객체생성이 가능하다.

profile
좋은개발자가 되기위한 삽질기록 노트

0개의 댓글

관련 채용 정보