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 |