클래스, 객체, 인스턴스
https://velog.io/@debut12/클래스-객체-인스턴스
특징
1. 추상화
2. 캡슐화
3. 상속
4. 다형성
5. 정보은닉
클래스 내의 구성 멤버 중 하나
클래스의 구성 멤버: 필드, 생성자, 메소드
멤버변수나 전역변수라고 한다.
객체 데이터를 저장하기 위한 역할
위치: 클래스 내의 생성자, 메소드가 아닌 곳
특징
1. 메소드 및 생성자 밖에서 선언
this.
을 사용필드 선언 방법
[접근제어자(public, private 등)][static, final 등] 자료형 변수명 [= 초기값] ;
[] 안의 값은 생략 가능
생성자 선언 방법
public 클래스(매개변수) { ... }
생성자 오버로딩
public class 클래스 {
클래스( [매개변수 ...]) {
...
}
클래스( [매개변수1, 매개변수2 ...]) {
...
}
}
// Ex. main() method
public static void main(String[] args) {
System.out.println("Main() method 시작");
}
// 결과
Main() method 시작
특징
전역 변수
의 성질// 가능
class 자식클래스 extends 부모클래스1 {
...
}
// 불가능
class 자식클래스 extends 부모클래스1, 부모클래스2 {
// 다중 상속을 허용하지 않아 여러 개의 부모 클래스 상속 불가
...
}
- 예시!!
- extends A :: A class 상속
public class A { int field1; void method1() {...} } public class B extends A { String field2; void method2() {...} }
// 주로 사용하는 방법
public final class String {...}
// 사용 불가능 --> extends(X)
public class NewString extends String {...}
// final 메소드
public final void stop() {
...
}
package sec01.exam06;
public class SportsCar extends Car {
@Override
public void speedUp() { speed += 10; }
@Override
public void stop() {
// 여기서 재정의 불가!
}
}
protected
abstract 사용
interface의 method와 같이 구현 부분은 없다
public static final
을 사용 & 생략 가능하다public abstract
를 사용 & 생략 가능하다// 중첩 클래스
public class ClassName {
class NestedClass {
...
}
}
// 중첩 인터페이스
public class ClassName {
interface NestedInterface {
...
}
}
static
관련된 멤버를 선언할 수 있는 내부 클래스static
이 붙음static 멤버, 메소드
를 만들어 사용할 수 있음결과를 통한 과정 생각
1. ChildExample 실행
2. ChildExample에서 Child를 부른다.
3. Child에는 Parent를 상속받기 때문에 다시 Parent를 부른다.
4. 따라서 제일 먼저 Parent가 실행된다.
5. nation을 매개변수로 받는 Parent method가 먼저 실행이 되고 그 다음 매개변수가 없는 Parent가 실행.
6. name을 매개변수로 받는 Child method 먼저 실행 후 매개변수가 없는 Child가 실행