1. Object 클래스
2. 메소드 오버라이드 (Method Override)
- 정의
- 사용법
- 어노테이션(Annotation)
3. final
4. 인터페이스(Interface)
5. 추상 메소드/클래스(Abstract)
6. 형변환(Type Cast)
1. Object 클래스
- java.lang 패키지(모든 패키지 중 기본 패키지 -> import 안해도 사용가능)
- Object 클래스는 클래스 계층 구조에서 최상위 클래스이다.
- 지구상의 모든 클래스는 부모 클래스로 Object를 가진다.
- 모든 Class는 extends(상속) 을 안붙이면 자동으로 extends Object가 생성된다.
2. 메소드 오버라이드 (Method Override)
(1) 정의
- 메소드 재정의(수정)
- 상속에서만 발생
(2) 사용법
public static void main(String[] args) {
Phone p1 = new Phone();
p1.dial();
}
class Phone {
public void dial() {
System.out.println("버튼을 눌러 CALL");
}
}
class SmartPhone extends Phone {
public void game() {
System.out.println("SmartPhone 자신의 메소드");
}
public void dial() { //메소드 오버라이드(재정의)
System.out.println("화면을 터치해주세요");
}
}
//output
----> 화면을 터치해주세요
(3) 어노테이션(Annotation)
@Override <-- 어노테이션(Annotation)
public void test() {
}
쓰는이유?
--> 개발자가 해당 메소드 재정의 할 때 컴파일 오류를 보여줌으로써 에러 나는것을 방지한다.(편의성 제공)
3. final
- final 키워드? ==> 수정금지!!
- 변수, 메소드, 클래스에 적용가능하다.
- 값을 초기화한 뒤에는 수정할 수 없다.
- 고칠 수 없는 변수, 수정할 수 없는 변수
- 클래스에서 멤버 상수는 접근 지정자를 public으로 하는 경우가 많다.
- 상수명(final 변수명)은 항상 대문자로 만든다. (관습)
- 예시)
//변수
int a = 10;
final int B = 20;
System.out.println(a);
System.out.println(B);
a = 30;
B = 40; //Error : The final local variable b cannot be assigned.
//output
---> 10
---> 20
---> 30
---> Error 발생
//메소드
class Test {
private int a=10; //일반 객체 멤버 변수
private final static int D=40; //정적 상수(final, 수정X)
public final void test() {
//절대 고치면 안되는 메소드
}
}
//클래스
final class Test { //절대 자식을 가질수 없는 클래스 --> 최종 클래스
}
4. 인터페이스(Interface)
- 클래스의 일종(자료형)
- 클래스와 구조/목적이 다르다.
- 인터페이스는 객체를 생성할 수 없다.
//인터페이스 선언
interface Test {
//인터페이스 멤버
//구현부가 없는 메소드 -> 추상메소드 -> 호출해도 사용불가
public abstract void test();
}
class AAA implements Test {
@Override
public void test() {
System.out.println("테스트");
}
}
public static void main(String[] args) {
AAA a = new AAA();
a.test();
}
//output
---> 테스트
- 일반 상속에서 오버라이드는 개발자의 선택
- 인터페이스 상속은 안하면 컴파일 오류 나오기때문에 오버라이드를 필수적으로 해야한다.
5. 추상 메소드/클래스(Abstract)
- 추상 클래스는 추상 메소드를 소유하기 때문에 객체를 생성할 수 있다.
- 예시
//추상 클래스
abstract class Test {
//추상 메소드(멤버)
public abstract void ok();
public abstract void no();
}
class AAA extends Test {
@Override
public void ok() {
}
@Override
public void no() {
}
}
< 추상클래스 VS 인터페이스 >
- 둘 다 추상 멤버를 가질 수 있다. (추상 메소드)
- 인터페이스는 구현 멤버를 가질 수 없다.
- 추상 클래스는 구현 멤버를 가질 수 있다.
- 인터페이스는 규칙만 강조 하고 싶을 때 사용한다.
- 추상클래스는 규칙도 강조하면서, 구현 멤버를 물려주고 싶을때 사용한다.
6. 참조형 형변환
- 클래스간의 형변환
- 상속 관계를 맺은 (직계)클래스간에만 가능하다.
- 자식 class ---> 부모 class : 업캐스팅(Up Casting)
- 부모 class ---> 자식 class : 다운캐스팅(Down Casting)
MEMO >
# Object 클래스는 현재는 어떤것이 존재하는지만 알아두자.
# 변수 오버라이드는 가능하지만 의미가 전혀 없기 때문에 사용을 안한다.
# toString() 은 반환된 문자열을 그대로 업무에 사용하는것이 아닌, 개발자가 객체의 상태를 확인하는 용도로 쓰인다.
# 추상 클래스보다 인터페이스가 더 많이 씌인다. 이유는 추상클래스가 설계는 굉장히 어렵고, 반면에 인터페이스는 추상클래스보다 생각해야할 경우의 수가 작기때문이다.
'인천일보아카데미 > - 학습일지' 카테고리의 다른 글
[학습일지]JAVA교육일지 31일차 (0) | 2022.06.10 |
---|---|
[학습일지]JAVA교육일지 30일차 (0) | 2022.06.09 |
[학습일지]JAVA교육일지 28일차 (0) | 2022.06.08 |
[학습일지]JAVA교육일지 27일차 (0) | 2022.06.08 |
[학습일지]JAVA교육일지 26일차 (0) | 2022.06.08 |