객체의 변수나 메서드를 캡슐로 만들어 외부로부터 보호하며 접근 제한자를 통해 필요한 부분만 외부로 노출시키는 특성이다.
public class Receipt {
private int price; // private 접근 제한자를 사용해 클래스 외부에서 접근 할 수 없다.
private int mount;
public int getTotalPrice { // public 접근 제한자를 사용해 외부에서 접근 가능하다.
return this.price * this.mount;
}
}
구체적인 요구사항의 공통적인 부분을 모아 객체로 만들어 관리하는 것을 의미
public class Car implements Vehicle { // 추상화된 Vehicle 인터페이스를 구현해 사용
@Override
public void move() {
System.out.Println("시동");
}
@Override
public void break() {
System.out.Println("정지");
}
@Override
public void backward() {
System.out.Println("후진");
}
}
public interface Vehicle { // 운송수단이 가지는 공통적인 기능을 interface로 관리
void move();
void break();
void backward();
}
하나의 변수 명이나 메서드 명이 상황에 따라 다르게 동작할 수 있는 것을 의미한다.
public class Cat {
private String name;
private int age;
public Cat(String name, int age) {
this.name = name;
this.age = age;
}
public Cat(String name) {
this.name = name;
}
}
부모 클래스의 변수나 메서드를 자식 클래스가 그대로 사용할 수 있으며 변경이 필요한 경우 자식 클래스에서 해당 기능을 수정하여 사용 할 수 있는 특성이다.
public class Parent {
private String lastName;
public void method() {
System.out.Println("부모 클래스 메서드");
}
}
public class Child extends Parent {
@Overide
public void method() {
System.Out.Println("자식 클래스 메서드");
}
}