MyMain_Final.java
package mymain;
// final : 더 이상 하지 못하게 하는 키워드
// 오버로드 : 한클래스내에서 똑같은 클래스 중복 선언가능 중복 메소드라고도 함
class A
{
// 상속을 해준 상태에서
protected void sub () {}
final void sub_final () {}
public void sub2 () {}
}
// 접근제한자 크기 순서 : private < default < protected < public
// 오버라이딩은 상속관계에서만 가능
class AA extends A
{
//Method Override(메소드 재정의) : 부모클래스의 메소드를 재정의하는 것
public void sub () {}
//void sub_final () {} 부모에서 final을 선언하였기에 재정의 불가
@Override
public void sub2() {
super.sub2();
}
}
class AAA
{
//결과형은 상관없고, 반환형도 틀려서 오버로딩이 되는건 아니고 인자값이 틀려야 함
public int plus(int a, int b) { return a+b; }
private int plus(int a, int b, int c) { return a+b+c; }
int plus(int nr) { return 0; }
}
/* final
1.변 수: final static 자료형 변수명=값; <=상수선언시
2.메소드: final 반환형 메소드명 (){} <= 더이상 재정의하지 말아라
3.클래스: final class MyClass <= 더이상 상속받지 말아라
*/
//String클래스에서 확장 받아서 원하는 것을 추가해서 확장하기 위해 상속받음
//상속 불가 클래스 (String) class MyString extends String {}
public class MyMain_Final {
public final static double PI=3.14;
public static void main(String[] args) {
final int MY_AGE=20;
//MY_AGE=21;
//PI=3.141592;
}
}