250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- objecterror
- 프록시
- 코딩테스트
- 스프링
- equals()
- ocp
- @configuration
- 추상클래스
- 오버라이딩
- 서블릿
- java
- html form
- 참조변수
- 스프링컨테이너
- 의존관계
- JSON
- 인터페이스
- 싱글톤
- 티스토리챌린지
- 다형성
- HttpServletResponse
- 코드트리
- DI
- fielderror
- 코드트리조별과제
- http 메시지 컨버터
- 오블완
- 백준
- 테스트코드
- 김영한
Archives
- Today
- Total
minOS
자바의 정석ch7-17~20 제어자, static, final, abstract 본문
728x90
ch7-17 제어자(modifier)
- 클래스와 클래스의 멤버(멤버변수,메서드)에 부가적인 의미 부여
접근제어자 : public,protected,(default),private
그 외 : static,final,abstract ...
- 하나의 대상에 여러 제어자를 같이 사용 가능 단, 접근 제어자는 하나만 사용 가능
예시
public class ModifierTest { public static final int WIDTH = 200; // 제어자 순서는 상관없으나 접근제어자는 보통 가장 왼쪽에 쓴다. public static void main(String[] args) { System.out.println("WIDTH = " + WIDTH); } }
ch7-18 static - 클래스의,공통적인
제어자 | 대상 | 의미 |
static | 멤버변수 | - 모든 인스턴스에 공통적으로 사용되는 클래스 변수 - 클래스 변수는 인스턴스를 생성하지 않아도 사용 가능 |
static | 메서드 | - 클래스가 메모리에 로드될 때 생성된다 - 인스턴스를 생성하지 않고도 호출이 가능한 static 메서드가 된다 - static 메서드 내에서는 인스턴스 멤버들을 직접 사용할 수 없다 |
예시
class StaticTest {
//클래스 변수
static int width =200;
static int height =120;
static { //클래스 초기화 블럭
//static 변수의 복잡한 초기화 수행
}
static int max(int a, int b){ //클래스(static) 메서드
return a > b ? a:b;
} //객체를 필요로 하는 instance 변수나 메소드에서는 사용 불가능
}
public class Main {
public static void main(String[] args) {
System.out.println(StaticTest.max(StaticTest.width, StaticTest.height)); //가능
StaticTest staticTest = new StaticTest();
//staticTest.max(200,300) static max 메서드 사용 불가능
}
}
//출력 200
ch7-19 final - 마지막의 , 변경될 수 없는
제어자 | 대상 | 의미 |
final | 클래스 | - 변경될 수 없는 클래스, 확장될 수 없는 클래스 그래서 final로 지정된 클래스는 다른 클래스의 조상이 될 수 없다 (상 속 계층에서 가장 마지막 child 클래스) |
fianl | 메서드 | - 변경될 수 없는 메서드, final로 지정된 메서드는 오버라이딩으로 재 정의 불가능 |
final |
지역변수,멤버변수 | -변수 앞에 final이 붙으면 상수가 된다. |
예시
final class FinalTest{ // 조상의 될 수 없는 클래스
final int MAX_SIZE = 20; //값을 변경할 수 없는 상수
final int getMaxSize(){ //오버라이딩 할 수 없는 메서드(변경불가)
final int LV = MAX_SIZE; // 상수
return MAX_SIZE;
}
}
public class Main {
public static void main(String[] args) {
System.out.println(new FinalTest().MAX_SIZE);
System.out.println(new FinalTest().getMaxSize());
}
}
/*출력 20
20 */
ch7-20 abstract - 추상의, 미완성의
제어자 | 대상 | 의미 |
abstract | 클래스 | 클래스 내에 추상 메서드가 선언되어 있음을 의미한다. |
abstract | 메서드 | 선언부만 작성하고 구현부는 작성하지 않은 추상 메서드임을 알린다. |
abstract class AbstractTest{ //추상 클래스(추상 메서드를 포함한 클래스)
abstract void move(); //추상 메서드(구현부가 없는 메서드)
}
추상 클래스는 미완성 설계도이므로 인스턴스를 생성할 수 없다. 만약 추상 클래스의 인스턴스를 생성하려면 해당 추상 클래스를 상속하는 구체적인 클래스를 정의하고, 해당 클래스의 객체를 생성해야한다. 이 클래스는 추상 클래스의 추상 메서드를 구현해야 한다.
abstract class AbstractTest{ //추상 클래스(추상 메서드를 포함한 클래스) abstract void move(); //추상 메서드(구현부가 없는 메서드) } class Car extends AbstractTest { void move(){ System.out.println("go to home"); } } public class Main { public static void main(String[] args) { AbstractTest abstractTest = new Car(); abstractTest.move(); } }
출력
728x90
'TIL > 남궁성의 자바의 정석' 카테고리의 다른 글
자바의 정석 ch7-22 캡슐화 (0) | 2023.12.13 |
---|---|
자바의 정석 ch7-21 접근제어자 (0) | 2023.12.12 |
자바의 정석 ch7-15, 16 import문, static import문 (0) | 2023.12.01 |
자바의 정석 ch7-12~14 패키지, 클래스 패스 (0) | 2023.11.30 |
자바의 정석 ch7-10,11 참조변수 super, 생성자 super() (0) | 2023.11.27 |