본문 바로가기

Java

(501)
13 - 3 장 이너 인터페이스 이너 인터페이스 (inner interface) - 인터페이스를 클래스 내부에 정의하는 것은 해당 클래스에 의존적인 기능을 수행할 때 - 사용자 인터페이스(user interface)의 이벤트 처리에 가장 많이 사용 ex) 버튼 클릭을 감지하는 인터페이스는 버튼 클래스 내부에 위치 1. 이너 인터페이스의 정의와 특징 - 정적 이너 인터페이스만 존재할 수 있음 - 이너 인터페이스 앞에 static 제어자를 생략하면 컴파일러가 자동으로 추가 class A { //... static interface B{ void bcd(); } } - 컴파일시 '아우터 클래스명$이너 인터페이스명.class' 형태로 .class 파일이 생성 - 자체적으로 객체 생성 불가 - 해당 인터페이스를 상속한 자식 클래스를 생성한 후 ..
13 - 2 장 익명 이너 클래스 1. 익명 이너 클래스의 정의와 특징 - '이름을 알 수 없는 이너 클래스' - 인스턴스 익명 이너 클래스 / 지역 익명 이너 클래스 interface C { public abstract void bcd(); } 1) 인터페이스를 상속한 이너 클래스를 생성해 인터페이스 객체 생성 class A1 { C b = new B(); void abc() { //메서드 내용 } class B implements C { public void bcd() { //메서드 구현 } } } - 인터페이스 C를 구현하고 있는 인스턴스 이너 클래스 B - C b = new B(); - 인터 페이스 C 타입의 참조 변수, 생성자 B()로 객체를 생성해 초기화 - abc() 메서드 정의 - C타입의 객체를 생성하기 위해 이너 클래스..
13 -1 장 이너 클래스 - 이너클래스(inner class) - 클래스 내부에 포함 - 종류 - 인스턴스 멤버 이너 클래스 - 정적 멤버 이너 클래스 - 지역 이너 클래스 class A { //아우터 클래스 class B { //인스턴스 멤버 클래스 //... } static class C { //정적 멤버 클래스 //... } void abc() { class D { //지역 이너 클래스 //... } } } 1. 인스턴스 멤버 이너 클래스 - 객체 내부에 멤버의 형태로 존재 - 아우터 클래스(outer class)의 모든 접근 지정자의 멤버에 접근 가능 - 소스파일 (.java)이 1개라 하더라도 컴파일을 수행하면 각 클래스별로 바이트 코드(.class)파일 생성 - '아우터 클래스.class' - ' 아우터 클래스$이너 ..
12 - 2장 인터페이스 1. 인터페이스의 정의와 특징 - 내부의 모든 필드가 public static final로 정의 - static과 default 메서드 이외의 모든 메서드는 public abstract로 정의 - interface 키워드 사용하여 선언 - 인터페이스 구조 interface 인터페이스명 { public static final 자료형 필드명 = 깂; public abstract 리턴 타입 메서드명(); } interface A { public static final int a = 3; public abstract void abc(); } - 제어자를 명시적으로 적어 주지 않으면 컴파일러가 자동으로 각각의 제어자 삽입 -> 메서드명 뒤에 중괄호가 없는데도 오류가 발생하지 않으므로 abstract가 자동으로 붙..
12-1장 추상 클래스 1. 추상 클래스의 정의 - 추상 메서드(abstract method) - 메서드의 본체가 완성되지 않은 미완성 메서드 - 중괄호 자체가 없음 - 중괄호가 없기 때문에 끝을 알리는 세미콜론(;)으로 끝나야 함 abstract 리턴 타입 메서드명(입력매개변수); abstract void abc(); - 추상 클래스 (abstract class) - 추상 메서드를 1개 이상 포함하고 있는 클래스는 반드시 추상 클래스로 정의돼야 함 - 추상 클래스는 메서드의 기능이 정의돼 있지 않은 미안성메서드가 1개 이상 있다는 의미 abstract class 클래스명 { } abstract class A { abstarct void abc(); void bcd(){ //... } } 2. 추상 클래스의 특징 - 추상 클래..
11-2장 abstract 제어자 - 추상 메서드 = abstract가 붙은 메서드 = 중괄호가 없는 메서드 = 메서드 기능 자체가 정의되지 않으며, 세미콜론(;)으로 끝남 abstract 리턴타입 메서드명(); - 추상 클래스 = abstract가 붙은 클래스 1. 일반 클래스를 상속해 오버라이딩 수행 -Animal 클래스의 cry()메서드는 내부에서 아무런 기능도 수행하지 않음 -Animal animal1 = new Cat()과 같이 다형적 표현을 사용했을때도 animal1.cry()의 형태로 cry()메서드를 호출하기 위해 사용 package Abstract1; class Animal { void cry() {} //부모 타입으로 cry()메서드를 호출하기 위해 선언(기능없음) } class Cat extends Animal { v..
11-1장 final 제어자 - final 제어자는 필드, 지역변수, 메서드, 클래스 앞에 위치 가능 1. final 변수 - final 제어자는 변수를 선언할 때만 지정가능 - 한 번 대입된 값을 수정할 수 없음 -final 필드 class A1 { //선언과 동시에 값을 대입할 때 int a =3; final int b =5; A1() { } } class A2 { //선언과 값의 대입을 분리했을 때 int a; final int b; A2() { a=3; b=5; } } class A3 { //final 필드값을 대입한 후에는 추가 값 대입 불가능 int a = 3; final int b = 5; A3() { a=7; //b=9; (불가능) } } - final 필드의 초기화는 반드시 생성자에서 진행 - final 지역 변수 ..
10 - 6장 최상위 클래스 Object - Object 클래스 - 자바의 모든 클래스는 Object 클래스를 상속받음 - 자바의 최상위 클래스 - 컴파일러는 아무런 클래스로 상속하지 않으면 자동으로 extends Object를 삽입해 Object 클래스를 상속 class A { //class A extends Object //상속을 하지 않을때 extends Object 자동으로 추가 } class B extends A { } - Object