[23.01.11] 56일차 [백엔드]

W·2023년 1월 11일
0

국비

목록 보기
82/119

final 예약어

  • 변수 : 값을 변경할 수 없다.
  • 메서드 : 메서드 오버라이딩(재정의)
  • 클래스 : 상속할 수 없다

  • Constant 클래스
package test;

// 클래스 final => 자식클래스 상속 받을 수 없음
public final class Constant {
	// 멤버변수
	public int num = 10;
	// 상수선언
	public final int NUM = 100;
	
	// 객체생성 없이(공유) 사용하는 상수 선언
	public static final double PI=3.14;
	
	// 메서드 final => 메서드 오버라이딩(재정의) 못하게 막음
	public final void prn() {
		System.out.println("Constant prn()");
	}
	
}
  • SubConstant 클래스
package test;

public class SubConstant /* extends Constant */ {

	// 부모메서드 final -> 메서드 오버라이딩 못함
//	@Override
//	public void prn() {
//		System.out.println("재정의");
//	}
	
}
  • 메인
package test;

public class Test1 {

	public static void main(String[] args) {
			
		Constant c = new Constant();
		System.out.println(c.num);
		System.out.println(c.NUM);
		// 변수에 값을 변경
		c.num=50;
		
		//	c.NUM=500; // 에러 final 변경 불가
		
		System.out.println(Constant.PI)	// 3.14
	}
}

인터페이스 연습

  • Calc 인터페이스
package test;

public interface Calc {
	
	// 멤버변수 -> 상수변수 인식(final 적용)
	//        -> 객체생성없이 바로 사용(static 적용)
	double PI = 3.14;
	int ERR = -9999;
	
	// 메서드를 정의 => 추상 메서드 인식
	// public abstract 생략
	int add(int num1, int num2);
	int sub(int num1, int num2);
	int mul(int num1, int num2);
	int div(int num1, int num2);
  • Clac2 인터페이스
package test;

public interface Calc2 {
	// 추상메서드
	public abstract void prn();
}
  • Calculator 클래스
package test;

public class Calculator implements  Calc2 {
	// 인터페이스 툴은 다중 상속 가능
    
	@Override
	public int add(int num1, int num2) {
		return num1+num2;
	}

	@Override
	public int sub(int num1, int num2) {
		return num1-num2;
	}

	@Override
	public int mul(int num1, int num2) {
		return num1*num2;
	}

	@Override
	public int div(int num1, int num2) {
		// 인터페이스 멤버변수 => final 상수 선언 => 값 변경 못함
//		ERR=100;
		// 인터페이스 멤버변수 => static 객체생성 없이 바로 사용
//		System.out.println(Calc.ERR);
		if(num2!=0) {
			return num1/num2;
		}else {
			return Calc.ERR;	
	}
    
    	@Override
	public void prn() {
		System.out.println("메서드 오버라이딩");
		
	}
    
}
  • 메인
package test;

public class Test2 {

	public static void main(String[] args) {

		Calc c= new Calculator();
		System.out.println(c.add(10, 20)); // 30
		System.out.println(c.sub(10, 20)); // -10
		System.out.println(c.mul(10, 20)); // 200
		System.out.println(c.div(10, 20)); // 0
		System.out.println(c.div(10, 0)); // -9999
        
        Calc2 c2 = new Calculator();
		c2.prn(); // 메서드 오버라이딩
	}

}

0개의 댓글