728x90
반응형
(22.8.2)
# 28강 내부클래스
- 내부클래스 - 클래스 내부에서 생성된 클래스
- 목적 - 클래스간의 관계가 긴밀할 때 사용하여 코드를 간결하게 하기 위해 사용
- 종류 - 인스턴스/ 스태틱, 지역, 익명 클래스
- 인스턴스 클래스 - 외부 클래스에서 맴버 변수 위치에 선언
- 클래스 내부에서 인스턴스 맴버처럼 다루며, 맴버들과 상호작용 가능
- 스태틱 클래스 - 외부클래스에서 맴버 변수 위치에 선언
- 클래스 내부에서 static 멤버처럼 다뤄지며 맴버들과 상호작용 가능
- 지역 킄래스 - 메서드 내부 지역변수 위치에 선언
- 메서드나 초기화 블록의 내부에서 다뤄지며 선언된 영역 내부에서 사용
package day28;
public class Day28_1 {
public static void main(String[] args) {
}
}
class A{
static class StaticInner{}
class InstanceInerr{}
StaticInner st1 = new StaticInner();
InstanceInerr ii1=new InstanceInerr();
static void StaticMethod() {
StaticInner st2 = new
StaticInner();
InstanceInerr
}
}
package day28;
public class Anonymous2 {
public static void main(String[] args) {
OuterClass1 o = new OuterClass1() {
void a() {
System.out.println("���Ӱ� ������ ��Ŭ���� ����");
}
};
o.a();
OuterClass1 ok=new OuterClass1();
ok.a();
}
}
class OuterClass1{
void a() {
System.out.println("method a");
}
void b(){ }
}
package day28;
public class Anonymous3 {
public static void main(String[] args) {
// Inter1 i1=new Inter1(); �������̽� ��ü ���� �Ұ�
Inter1 i1= new Inter1() {
public void f1() {
System.out.println("f1()");
}
};
i1.f1();
}
}
interface Inter1{
public void f1();
}
package day28;
public class InnerEx1 {
public static void main(String[] args) {
}
}
class A{
static class StaticInner{
}
class InstanceInner{
}
StaticInner st1=new StaticInner();
InstanceInner ii1 = new InstanceInner();
static void StaticMethod() {
StaticInner st2=new StaticInner();
// InstanceInner ii2=new InstanceInner(); ������
}
void InstanceMethod(){
StaticInner st3=new StaticInner();
InstanceInner ii3=new InstanceInner();
}
}
# 29강 예외 처리
- 예외 - 프로그램 실행 중 발생하는 오류 중에서 처리가 가능한 것을 의미
- 예외처리 - 예외가 발생했을 때 이를 적절히 처리하여 프로그램이 비정상적으로 종료되는 것을 방지하는 것을 의미한다.
try-catch-finally - 예외발생 시, 적절하게 처리하기 위해 자바에서 제공하는 예외처리
finally문 - try-catch문에 선택적으로 추가할 수 있는 문법으로, 오류가 발생하든 하지 않든 무조건 실행하는 구문
package day29;
public class Day29_1 {
public static void main(String[] args) {
int a=0;
int b= 2;
int c= b/a;//0으로 나눌 수 없어 나오는 오류: ArtheticWxeption
}
}
package day29;
public class Day29_2 {
public static void main(String[] args) {
try {
int []a = {2,0,0};
int b=4;
int c=b/a[2];//배열의 index[0],[1]
System.out.println(c);
}catch(ArithmeticException e) {
System.out.println("산술 오류 발생");
}
catch(ArrayIndexOutOfBoundsException e) {
System.out.println("배열 길이 오류 발생");
}
System.out.println("예외처리 공부 중");
}
}
package day29;
public class Day29_3 {
public static void main(String[] args) {
int a=0;
int b=2;
try {
System.out.println("외부로 접속");
int c =b/3;
}
catch(ArithmeticException e) {
System.out.println("오류 발생");
}
finally {
System.out.println("오류 발생X");
}
}
}
# 30강 예외처리2
- 객체로서의 예외 - 자바는 객체지향 언어이기 때문에 객체로 예외처리
- throw 예외발생 - 프로그래머가 고의로 예외를 발생 시킬 때
package day30;
public class Day30_1 {
public static void main(String[] args) {
try{
Exception e =new Exception("고의 예외");
throw e; //고의적으로 예외를 발생시키겠다
}
catch(Exception e) {
System.out.println("예욉ㄹ생");
System.out.println("e.getMessage()");
}
}
}
package day30;
public class Day30_2 {
public static void main(String[] args) {
try {
methodA();
}
catch(Exception e) {
System.out.println("메인에서 처리");
}
}
public static void methodA() throws Exception{
methodB();
}
public static void methodB() throws Exception{
methodC();
}
public static void methodC() throws Exception{
Exception e = new Exception();
throw e;
}
}
package day30;
public class Day30_3 {
public static void main(String[] args) {
try {
System.out.println("외부 트라이");
try {
System.out.println("내부 트라이");
Exception e = new Exception();
throw e;
}
catch(Exception e) {
System.out.println("내부 트라이 캐치문"+e);
System.out.println("예외던지기 한 번 더");
throw e;
}
finally {
System.out.println("finally 구문 출력");
}
}
catch(Exception e) {
System.out.println("외부 트라이 캐치문"+e);
}
}}
반응형
'Java > Java 인강' 카테고리의 다른 글
Java 인강 필기 10 (1) | 2022.10.02 |
---|---|
Java 인강 필기9 (0) | 2022.10.02 |
Java 인강 필기 7 (0) | 2022.10.02 |
Java 인강 필기 6 (0) | 2022.10.02 |
Java 인강 필기 5 (0) | 2022.10.02 |