본문 바로가기
Java/Java 인강

Java 인강 필기 8

by code2772 2022. 10. 2.

[ 목차 ]

    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