[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(); // 구현된 메서드 호출
}
'컴퓨터공부 > Java' 카테고리의 다른 글
[java] 메서드의 호출과 데이터 이동,<>는 자바의 Generics , new ArrayList<>(), 자손과 조상의 interface (0) | 2023.12.24 |
---|---|
[java 자바공부] 스트림과 람다 인스턴스 메소드, 정적 메소드, 동적 메소드, 코딩테스트 공부 (1) | 2023.12.21 |
[java공부] 인터페이스와 추상메서드의 개념 (0) | 2023.11.07 |
[java] instanceof 연산자, 형변환이 가능한것이냐 불가능을 체크하고 객체를 만들어야되는 코드, 추상메서드 (abstract method), (0) | 2023.11.06 |
댓글