[JAVA] 클래스와 객체

min82·2023년 8월 1일

JAVA

목록 보기
3/8

✅ 클래스 구성

  • 클래스 선언
    - class 키워드로 선언
    - 클래스 접근 권한 부여 가능
  • 필드와 메소드
    - 필드(field): 객체 내에 값을 저장하는 멤버 변수
    - 메소드(method): 함수이며 객체의 행동을 구현
  • 필드의 접근 지정자
    - 필드나 메소드 앞에 붙어 다른 클래스의 접근 허용을 표시
  • 생성자
    - 클래스의 이름과 동일한 특별한 메소드
    - 객체가 생성될 때 자동으로 한 번 호출되는 메소드
    - 개발자는 객체를 초기화하는데 필요한 코드 작성

✅ 생성자

  • 클래스 이름과 동일한 메소드
  • 생성자는 여러개 작성 가능(오버로딩)
  • 생성자는 new를 통해 객체를 생성할 때, 객체당 한 번 호출
  • 생성자는 리턴 타입을 지정할 수 없음
  • 생성자의 목적은 객체 초기화
  • 생성자는 객체가 생성될 때 반드시 호출되므로 하나 이상 선언되어야 함
    - 개발자가 생성자를 작성하지 않은 경우 컴파일러가 자동으로 기본 생성자 삽입
public class Circle {
    int radius; // 원의 반지름 필드
    String name; // 원의 이름 필드
    public Circle() {} // 원의 생성자
    public double getArea() { //  원의 면적 계산 메소드
        return radius*radius*3.14;
    }

    public static void main(String[] args) {
        Circle pizza = new Circle(); // Circle 객체 생성
        pizza.radius = 10; // 피자의 반지름을 10으로 설정
        pizza.name = "Pizza";
        double area = pizza.getArea();
        System.out.println(pizza.name + "의 면적은 " + area);

        Circle donut = new Circle();
        donut.radius = 2;
        donut.name = "Donut";
        area = donut.getArea();
        System.out.println(donut.name + "의 면적은 " + area);
    }
}

✅ 접근지정자

public

  • 다른 모든 클래스에게 접근 허용
  • 패지키에 관계 없이 모든 클래스에게 접근 허용

private

  • 동일 클래스 내에만 접근 허용
  • 상속 받은 서브 클래스에서 접근 불가

protected

  • 같은 패키지 내의 다른 모든 클래스에게 접근 허용
  • 상속 받은 서브 클래스는 다른 패키지에 있어도 접근 가능

디폴트(접근지정자 생략)

  • package-private라고도 함
  • 같은 패키지의 클래스에만 접근


✅ static의 활용

  1. 전역 변수와 전역 함수를 만들 때 활용
    • 전역 변수나 전역 함수는 static으로 클래스에 작성
public class Math {
	public static int abs(int a);
	public static double cos(double a);
    public static int max(int a, int b);
    public static double random();
	...
}
  1. 공유 멤버를 작성할 때
    - static 필드나 메소드는 하나만 생성.
    • 클래스의 객체들 공유

✅ final

  • final 클래스
    - 클래스 상속 불가
final class FinalClass { 
	.....
}
class SubClass extends FinalClass { // 컴파일 오류. FinalClass 상속 불가
	.....
}
  • final 메소드
    - 오버라이딩 불가
public class SuperClass {
	protected final int finalMethod() { ... }
}
class SubClass extends SuperClass { // SubClass가 SuperClass 상속 
	protected int finalMethod() { ... } // 컴파일 오류, 오버라이딩 할 수 없음
}
  • final 필드
    - 상수를 선언할 때 사용
    - 선언 시에 초기 값을 지정해야 함
    - 실행 중에 값을 변경할 수 없음
class SharedClass {
	public static final double PI = 3.14;
}
profile
8282

0개의 댓글