본문 바로가기

컴퓨터공부/Java

[java 공부] 제어자, 추상메서드, abstract , static

by Life & study 2023. 11. 7.
반응형

[java 공부] 제어자, 추상메서드, abstract , static ,final

 

# 제어자 (modifier)

 

접근 제어자

 

1. 순서는 상관없는데 접근제어자를 첫번째로 쓰인다.

2. 접근제어자는 1개밖에 안된다.

3.

 

-접근 제어자의 종류

 

접근 제어자(Access Modifiers): 클래스, 메소드, 변수의 접근 범위를 지정하는데 사용됩니다.
private: 선언된 클래스 내부에서만 접근 가능합니다.
default(접근 제어자가 없는 경우): 동일한 패키지 내에서만 접근 가능합니다.
protected: 동일한 패키지 내, 혹은 다른 패키지의 하위 클래스에서 접근 가능합니다.
public: 어디서든 접근 가능합니다.

 

그 외 

 

-그 외의 종류

 

그 외의 제어자(Non-Access Modifiers):
static: 클래스 수준에서 사용됩니다. 인스턴스 생성 없이 사용 가능합니다.

 

1. static 간단초기화

public class MyClass {
    public static int count = 0; // static 필드의 간단한 초기화
}

 

2. static 복잡초기화 {}

 

코드

public class MyClass {
    public static int[] numbers;

    // static 초기화 블록
    static {
        numbers = new int[5];
        for (int i = 0; i < numbers.length; i++) {
            numbers[i] = i * 10;
        }
    }
}

 

 

 

 

 

3.static메소드에서는 iv 사용불가 (멤버변수, 메소드 인스턴스 사용불가)

 

4. static메소드는 객체생성없이 바로  (매개변수타입 매개변수명1 매개변수타입 매개변수명2)

 

static 타입 메소드명 (매개변수타입 매개변수명1 매개변수타입 매개변수명2)

{

return a > b ? a : b;

 

}

 

5. final 마지막의 변경될 수 없는 

 

final  클래스

상속을 허용하지 않는 클래스입니다. 즉, 다른 클래스가 final 클래스를 확장할 수 없습니다.

(로그인, 비밀번호 마지막 마지막 자손에서 처리하고끝냄) 

String, Math Static 메소드 집합

 

final  메서드

오버라이딩이 안된다는것은 조상메서드를 덮어쓸수없다는것이다.

오버라이딩을 허용하지 않는 메서드입니다. 즉, 하위 클래스에서 final 메서드를 재정의할 수 없습니다.

 

final  멤버변수

final 멤버 변수: 값이 한 번 할당되면 변경할 수 없는 멤버 변수입니다. 즉, 멤버 변수에 대한 재할당이 불가능합니다.

 

final  지역변수

final 지역 변수: 값이 한 번 할당되면 변경할 수 없는 지역 변수입니다. 즉, 지역 변수에 대한 재할당이 불가능합니다.

 

final: 상수, 메소드 오버라이딩 금지, 상속 금지를 의미합니다.
abstract: 구현이 없는 메소드, 클래스를 의미합니다. 상속을 통해 구현해야 합니다.

 

 

 

## abstract  추상의 미완성의 추상화

 

abstract

1.추상 메서드 구현부가 없는 메서드

2.추상 클래스 (추상 메서드를 포함한 클래스)  {몸통이 없는 메서드}

 

3.미완성 클래스

4. abstract 사용법

 

코드

public abstract class AbstractClass { // abstract 클래스
    public abstract void abstractMethod(); // abstract 메서드  // 몸통을 만들어야 쓸수잇다는부분
}

 

 

5. 사용할려면 완전한 클래스를 만든 후에 객체 사용이 가능하다.

추상클래스<--> 구상클래스

 

 

 

-구상클래스 코드

public abstract class AbstractClass { // abstract 클래스
    public abstract void abstractMethod(); // abstract 메서드
}

public class ConcreteClass extends AbstractClass { // 구상 클래스
    @Override
    public void abstractMethod() { // abstract 메서드 구현
        System.out.println("Implemented abstract method.");
    }
}

// 메인 메서드
public static void main(String[] args) {
    ConcreteClass cc = new ConcreteClass(); // 구상 클래스의 객체 생성
    cc.abstractMethod(); // 구현된 메서드 호출
}

 

 

 

 

 

 

 

반응형

댓글