[JAVA] 클래스와 객체

조히고닝·2023년 2월 23일
0

클래스

클래스는 객체의 상태를 나타내는 필드(field)와 객체의 행동을 나타내는 함수(method)로 구성됩니다.

※필드 : 클래스에 포함된 변수를 의미합니다.

※함수 : 어떠한 기능을 갖고있는 명령문의 집합

JAVA는 기본 클래스를 가지고 있어서 클래스 선언 없이 사용할 수 있음.
객체 만들때는 클래스 항상 필요. 따로 선언 안했을 때는 기본클래스 사용하고 있는것임.

접근제어자

  • public : 모든 접근을 허용, 같은 프로젝트 내의 모든 객체들이 사용할 수 있도록 허용

  • private : 현재 클래스 내에서만 사용을 허가

  • protected : 상속관계의 객체들에게만 허가

  • default : 같은 패키지(폴더)내의 객체에만 사용을 허가

class Main {
    public static void main(String[] args) {
        //자동차 클래스 참조변수 a페라리 생성. 페라리 생성자로 페라리 객체 생성
        자동차 a페라리= new 페라리();
        //페라리 클래스 참조변수 b페라리에 a페라리가 참조하는 페라리 객체 참조
        //페라리=>자동차는 자동 형변환 가능, 부모클래스 참조변수로 
        페라리 b페라리=(페라리)a페라리;
        //a페라리 자동 형변환 불가. 수동 캐스팅해야 페라리 클래스 메소드 사용 가능.
        ((페라리) a페라리).뚜껑이_열리다();
        
        b페라리.뚜껑이_열리다();
        a페라리.서다();

    }
}
class 자동차 {
    void 달리다() {
        System.out.println("자동차 달린다");
    }
    void 서다() {
        System.out.println("끼이익!");
    }
}
class 페라리 extends 자동차 {
    void 뚜껑이_열리다() {
        System.out.println("춥다 뚜껑 닫아..");
    }
}

상속과 포함

  • 공통부분 뽑아서 관리 할 수 있으므로 중복 제거랑 코드관리가 용이함
  • 페라리 is 자동차 or 페라리 has 자동차. 생각하고 만들자.
  • 상속하면 페라리 is 자동차라서 자동차 메서드 기본으로 포함하고 있음.
  • 자동차는 기본 생성자 자동차() 포함하고 있고 페라리에는 super()로 상속된다.

참조변수의 형변환

  • 기본형 변수처럼 참조변수도 형변환이 가능하다. 다만 상속관계에 있는 클래스 간에서만 형변환이 가능하다.
  • 기본형 변수에서 큰 자료형에서 작은 자료형으로의 형변환이 생략이 안되듯이
자손타입->조상타입(UP=casting) 은 형변환 생략 가능 
조상타입->자손타입(Down-casting)은 형변환 생략 불가하다.

0개의 댓글