2023. 12. 20. 09:24ㆍ2023.11.21-2024.05.31
package dec19;
//2023-12-19
//어제 했던 것
/*
* static
* 변수, 메소드 앞에 붙여요.
* 클래스에 붙어서 동작합니다.
* 인스턴스 생성 없이 사용합니다.
* 하나만 생성해서 사용할 때.
* 상수 사용할때. final.
*
*
* 접근제어자
* 클래스 내부 | 동일 패키지 | 상속 | 기타
* public : O O O O
* protected: O O O X
* default : O O X X
* private : O X X X
*
* 상속
* 유산
* 클래스간의 관계를 설정해서 부모 자식관계를 만듬
* 부모-자식
* 상위-하위
* super-sub
* 부모의 모든 내용을 자식이 사용할 수 있습니다.
* class 자식 extends 부모{}
* 단, 부모의 private 변수/메소드는 상속할 수 없습니다.
* 부모와 자식 클래스가 서로 다른 패키지에 있다면 부모의 default 붙은
* 필드/메소드는 자식이 물려받을 수 없습니다.
*
* 부모의 생성자 호출 super()
* 내 생성자 호출 this()
*
* 내 인스턴스의 내변 this
*
* 외부 라이브러리 사용하기
*
* 오늘 할 거
* 오버라이드
* 오버로드
* 다형성
* 추상화
*
* */
class A {
// final static int number;//static ->기울어지는 것, final->굵게 처리
static int number;
int num;
}
class B {
static B b = null;
private int num;
private B() {
System.out.println("생성자입니다.");
}
public static B getInstance() {
if (b == null) {
return b = new B();
} else {
return b;
}
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}// 싱글톤
public class Test02 {
public static void main(String[] args) {
A a = new A();
A.number = 10;// static은 클래스명. static변수명/ 인스턴스 안만들고 쓸 수 있다.
A.number = 100;
System.out.println(A.number);
B b = B.getInstance();
B b2 = B.getInstance();
B b3 = B.getInstance();
B b4 = B.getInstance();
b.setNum(1);
b2.setNum(2);
b3.setNum(3);
b4.setNum(4);
System.out.println(b.getNum());
System.out.println(b2.getNum());
System.out.println(b3.getNum());
System.out.println(b4.getNum());
// B b = new B();//private으로 잠궈서 가져올 수 없다.
}
}
100
생성자입니다.
4
4
4
4
'2023.11.21-2024.05.31' 카테고리의 다른 글
231220 JAVA Study (1) | 2023.12.20 |
---|---|
231220 JAVA Test01(프로그래머스 문제) (0) | 2023.12.20 |
231219 JAVA Test01 (0) | 2023.12.20 |
231219 JAVA AbstractEx2(추상화) (0) | 2023.12.20 |
231219 JAVA AbstractEx(추상화) (0) | 2023.12.20 |