Java/Java 인강

Java 인강 필기 8

code2772 2022. 10. 2. 11:01
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