멍하
다시 돌아온 자바공부 5일차 version 2
자바 빨리 끝내고 싶어요
19강 final 키워드
https://youtu.be/HqwpYlRCKxk?si=wv67CkbzaFK5MD65
그게 뭘까?
final : 절대 변하지 않는 것 (변수, 메소드, 클래스 etc..)
- 변하지 않는 변수 = 상수
- 재정의가 불가능한 메소드
- 상속이 불가능한 클래스
변수
//main.java
public class Main {
public static void main(String[] args) {
final int number = 10; //변수 값을 바꿀 수 없음
System.out.println(number);
}
}
메소드
parent 클래스의 show에서 hi를 출력
//parent.java
public class Parent {
public void show() {
System.out.println("hi");
}
}
main class에서 show 메소드를 재선언해줬기 때문에 hello를 출력함
//main.java
public class Main extends Parent {
public void show() {
System.out.println("hello");
}
public static void main(String[] args) {
Main main = new Main();
main.show();
}
}
but final을 붙이면 main class에서 show를 재정의할 수 없음
public final void show()
//parent.java
public class Parent {
public final void show() {
System.out.println("hi");
}
}
final class는 상속받을 수 없음
final class Parent { } //다른 class에서 상속 불가
20강 인터페이스
https://youtu.be/XkSWgIQ2zkk?si=xlhyYiX2BxzEXeT9
인터페이스
다중상속이 가능함
정의된 메소드와 상수만을 가질 수 있음
?? 설계에 필요한 것만 만들 수 있음?
추상메소드는 하나의 클래스만 상속받을 수 있지만 인터페이스는 다중 상속이 가능하다.
implements를 통해 상속 받을 수 있다.
public class Main implements class1, class2
//main.java
public class Main implements Dog, Cat{
public static void main(String[] args) {
Main main = new Main();
main.crying();
main.one();
main.two();
}
@Override
public void crying() {
// TODO Auto-generated method stub
System.out.println("멍멍");
}
@Override
public void one() {
// TODO Auto-generated method stub
System.out.println("one!");
}
@Override
public void two() {
// TODO Auto-generated method stub
System.out.println("two!");
}
}
interface를 통해 인터페이스 클래스를 선언할 수 있다.
public interface className
더욱 추상적인 형태이기 때문에 { }도 사용할 수 없다.
//Dog.java
public interface Dog{
abstract void crying();
public void one(); //{}를 사용하여 값을 넣을 수 없음
}
2개의 클래스를 한 번에 상속받을 수 있음을 테스트하기 위한 cat class
//Cat.java
public interface Cat {
abstract void crying();
public void two();
}
큰 그림은 추상클래스와 비슷하지만 더욱 심플하게 생성해야한다는 점, 다중상속이 가능하다는 점이 인터페이스의 특징일까?
'JAVA' 카테고리의 다른 글
이클립스(eclipse) 한글 깨짐 고치기 (0) | 2023.09.18 |
---|---|
[JAVA] 다형성(polymorphism) (0) | 2023.09.18 |
[JAVA] 추상 클래스(abstract class) (0) | 2023.09.15 |
[JAVA] 배열, 다차원 배열, 클래스, 상속 (0) | 2023.09.14 |
[JAVA] 생성자 (Constructor) (0) | 2023.09.14 |