728x90

1. 접근제어자(Access Modifier)

private 해당 클래스 내에서만 접근 가능
public 모든 클래스에서 접근 가능
default 같은 패키지 내에서만 접근 가능 (접근 제어자가 없을 경우 default)
protected 같은 패키지 내에서, 다른 패키지인 경우 자식 클래스에서 접근 가능
  • 멤버 또는 클래스에 사용되어 해당하는 멤버 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할을 함
  • 접근제어자는 클래스 / 멤버변수 / 메서드 / 생성자에서 사용된다.
  • 클래스 내부에서 선언된 데이터를 보호하기 위해 사용함(객체지향의 캡슐화에 해당됨)
  • 데이터를 외부에서 함부로 변경하지 못하도록 하기 위함

 

2. 상속(Inheritance)

  • 자식 클래스가 부모 클래스의 기능을 사용할 수 있는 것.
  • 접근 제어자가 private을 갖는 필드나 메서드는 상속 불가
  • 패키지가 다를 경우 접근제어자가 default인 경우 상속 불가
  • 중복된 코드를 줄일 수 있고, 유지보수가 편리한 장점이 있음
public class Cafe{
    String coffee;
    int price;
    
    public void menu(){
    	System.out.println(coffe + "는 " + price + "원 입니다.");
    }
}

public class HelloCafe extends Cafe{
    HelloCafe(String coffee, int price){
        this.coffee = coffee;
        this.price = price;
    }
}

public static void main(String[] args){
    HelloCafe hc = new HelloCafe("아메리카노", 1500);
    hc.menu();
}

// 출력결과 ==> 아메리카노는 1500원 입니다.

 

3. 메소드 오버라이딩

  • 부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의 하여 사용하는 것.
  • 부모 메소드의 이름, 리턴 타입, 매개변수의 개수, 자료형과 순서를 동일하게 해야한다.
  • 자식 클래스에서 부모의 메소드를 수정해야할 때 사용한다.
  • 부모 메소드는 은닉되고, 자식 클래스에서 재정의된 메소드만 호출된다.(super로 부모 메소드 호출 가능)
public class Exercise {
	public String name;
    
    public Exercise(){
    	this("운동")
    }
    
    public Exercise(String name){
    	this.name = name;
    }
    
    public void effective(){
    	System.out.println(this.name + "의 주요 효과는 다이어트입니다.");
    }
}

public class Soccer extends Exercise {
    public Soccer(){
        super("축구");
    }

    @Override
    public void effective(){
        System.out.println(this.name + "의 주요 효과는 심폐지구력 향상입니다.");
    }
}

 

4. 열거형(Enum)

  • 클래스 처럼 보이게 하는 상수, 서로 관련 있는 상수들끼리 모아 상수들을 정의 한 것이다.
  • 열거형으로 선언된 순서에 따라 0부터 index의 값을 가진다.
  • 열거형으로 지정된 상수는 모두 대문자로 선언한다.
  • 열거형 변수 선언 후 세미콜론은 사용하지 않는다.
  • 상수와 특정 값을 연결 시킬 경우 마지막에 세미콜론을 붙여주어야 한다.
enum Phone{
    GB(512), TB(1);

    private final int capacity;

    Phone(int capacity){
        this.capacity = capacity
    }
    
    public int getCapacity(){
    	return capacity;
    }
}

public static void main(String[] args){
    Phone phone = Phone.GB;
    System.out.println("휴대폰의 용량은 " + phone);

    for(Phone cp : Phone.values()){
        System.out.println("휴대폰의 용량은 " + cp.getCapacity);
    }

}
728x90

'Java' 카테고리의 다른 글

추상클래스  (0) 2023.06.08
클래스 - 샌드위치 만들기  (0) 2023.06.07
클래스 - 2  (0) 2023.06.07
클래스 - 1  (0) 2023.06.07
메소드 - 개인정보 일부 비공개 하기  (0) 2023.06.07

+ Recent posts