Object obj = new Circle(10);
System.out.println(obj);
▼정답
class Object {
protected double r;
public Object(int r) {
this.r = r;
}
public double getArr(double r) {
return this.r * this.r * Math.PI;
}
}
class Circle15 extends Object {
public Circle15(int r) {
super(r);
}
@Override
public String toString() {
return "출력: 넓이는 " + super.getArr(r) + "입니다.";
}
}
public class Test52 {
public static void main(String[] args) {
Object obj = new Circle15(10);
System.out.println(obj); // 출력 : 넓이는 314.1431234입니다. (예시)
}
}
▼정답
public final class MyLastCls{...}
⇒MyLastCls 클래스는 다른 클래스가 상속할 수 없음
class Simple{public final void func(int n)}
⇒아래의 메소드는 다른 클래스에서 오버라이딩 할 수 없음
▼정답
1. interface = 상수와 + abstract(추상)함수(바디가 없는 함수)
2. interface에는 변수가 올 수 없다.
인터페이스(interface) = 자손이 구현하라. (갑→을이 구현)
2개 이상의 클래스를 상속받을 수 있다.
예시)
class C implements A, B{}
class는 두 개의 클래스를 상속 받을 수 없다.
▼정답
애너테이션
개발자가 부모에 있는 함수(똑같은 이름이 있는)를 체크해서 없으면 컴파일 에러를 내라
▼정답
abstract(추상)함수(바디가 없는 함수)
interface Printable {
void print(String doc); // 추상 메소드 public abstract void print(String doc) 이 생략되어 있다.
}
//인터페이스의 정의! 메소드의 몸체를 갖지 않는다.
//따라서 인스턴스 생성 불가! 참조변수 선언 가능
try {
int num = 6 / 0;
} catch (Exception e) {
e.printStackTrace();
} catch (InputMismatchException e) {
e.printStackTrace();
}
▼정답
Exception e 에서 다 잡아서 밑의 InputMismatchException e는 불필요해서 컴파일 에러가 발생한다.
▼정답
콜스택 : JVM이 쌓는다.
실시간 에러처리 메커니즘
1.컴파일 에러
- 주체 : 컴파일 시점에서 발생하는 에러
- 프로그램이 그 자리에서 프로그램을 중단시키고 객체로 표현한다.
ex) ';'(세미클론)이 누락된 문법 에러
괄호가 맞지 않는 구문 에러
interface 사용 시 함수의 구체적인 내용을 적지 않은 에러
2.실시간 에러
- 주체 : JVM
- JVM은 티비의 메인
ex) NullPointerException(생성되지 않은 객체를 참조할 때 발생)
Infinite Loop(무한 루프)
ArithmeticException(0으로 나눴을 때 발생)
▼정답
컴파일 에러
실행하기 전에 에러를 알 수 있어서 더 좋다.
▼정답
NullPointerException(생성되지 않은 객체를 참조할 때 발생)
Infinite Loop(무한 루프)
ArithmeticException(0으로 나눴을 때 발생)
▼정답
try ~ catch 사용하는 이유
① 안 죽이려고
JVM은 에러가 나오면 그 자리에서 중단시키는 역할인데,
try ~ catch를 사용하면 개발자가 try{}안의 내용에서 에러 발생 시 책임을 지겠다는 것.
try{} : 에러가 발생할 수 있는 코드를 넣는다.
catch{} : 에러 발생 시 catch 안에 넣은 내용으로 출력
finally{} : 정상 실행이든 에러가 나든 무조건 실행 됨.