객체를 만들기 위한 설계도
다양한 특성과 형태의 요소(변수, 상수, 메소드)를 내포하고 있는 것
클래스로부터 생성된 실체
클래스로부터 생성된 구체적인 객체
일반적으로 객체와 인스턴스는 동의어로 사용됩니다. 의미를 구별해서 사용하는 경우, 객체는 해당 인스턴스보다 추상적인 개념으로 사용됩니다.
Class에는 상속성, 캡슐화, 다형성 3개의 속성이 있습니다.
상속성은 한 클래스의 속성과 메소드를 다른 클래스에게 물려주는 것을 뜻합니다.
상속은 부모/상위 클래스에서 자식/하위클래스로 이루어집니다. 이때 상속받은 클래스의 속성과 메소드까지 모두 사용 가능하게 됩니다. 예를 들어, A class를 B class 가 상속 받았다면 B class는 A가 가진 모든 것을 사용할 수 있습니다. 한마디로 Class가 합집합이 되는 것을 의미합니다.
캡슐화는 객체의 속성과 메서드를 하나로 묶어 외부의 직접 접근으로부터 보호하는 것입니다. 객체의 메소드를 통해서 접근이 가능하므로 변경이 어렵고, 유지보수나 확장 시 오류를 줄일 수 있습니다.
하나의 객체가 여러 형태를 가지는 것을 의미합니다. 다형성은 코드의 길이를 짧게 유지하는데 도움이 됩니다. 대표적인 예로는 오버로드와 오버라이드가 있습니다.
오버로드(치환): 한 클래스 내에서 메서드의 이름은 같지만 매개변수가 다른 버전을 여러 개 정의하는 것
오버라이드(재정의): 상위 클래스에서 이미 정의된 메서드를 하위 클래스에서 동일한 이름, 매개변수로 다시 정의하는 것. 메소드의 이름은 동일한데 객체마다 다른 작업을 수행할 수 있음.
public class A {
int a;
float b;
const c = 4;
public Int sum(){
int sum = 0;
sum = 1 + 2 + 3 + c;
return sum;
} //하나의 클래스
public void sum(){
system.out.prinIn("HELLO JAVA");
} //void는 return값이 없다는 뜻
public subtract( int d){
int sub = 0;
sub = c - d;
return sub;
}//하나의 클래스
}
var sum = 0;
let aa = new A();
sum = aa.sum();