
1) 의미 : 이름이 없는 일회용 클래스. 2) 문법 3) 특징 - 정의와 생성을 동시에 함 - 조상클래스(Object) 이름 or 인터페이스 이름 + () { 클래스 내용 } ex.예시 public class Ex7_18 { public static void main(String[] args) { Button b = new Button("Start"); b.addActionListener(new EventHandler()); } } class EventHandler implements ActionListener{ //조상클래스 명 : ActionListener public void actionPerformed(ActionEvent e) { System.out.println("ActionEvent oc..

1) 의미 : 클래스 안의 클래스 2) 장점 내부 클래스에서 외부 클래스 멤버들에 쉽게 접근할 수 있음 코드 복잡성을 줄일 수 있음(캡슐화) 3) 내부클래스 종류 인스턴스 클래스 static 클래스 지역 클래스 익명 클래스 4) 내부클래스의 제어자 * 인스턴스멤버가 static 멤버 사용하는 것 항상 가능! (반대로, static 멤버는 static 멤버만 사용 가능) - public, default, protected, private 모두 사용 가능 (원래 일반 class 앞엔 제어자 default와 public만 사용 가능), (iv, cv, lv도 4개 접근자 모두 사용 가능) - static 클래스만 static 멤버(객체생성 없이 사용 가능) 정의 가능 (예외! 상수인 경우에는 final sta..

1) 배경 - 인터페이스에는 원랜 추상메서드만 추가 가능. 추상메서드 추가시 이를 꼭 구현(몸통 추가하는 작업)해야 하기 때문에, 추상메서드 추가함으로써 구현이라는 추가 작업이 번잡함이 생겨남. 이 번잡함을 해결하기 위해 default 메서드를 예외적으로 허용. (인터페이스 원칙 위반) - 기존에 인터페이스에 추상메서드만 가능하게 했던 이유(몸통 사용 불가능하게 했던 이유)는 기존 메서드와의 충돌! 2) 특징 - 인터페이스에 default 메서드, static 메서드 추가 가능 (JDK1.8부터) default메서드를 사용하게 되면서 여러 인터페이스의 default메서드 간의 충돌 발행 - 해결방법 : 인터페이스를 구현한 클래스에서 default 메서드를 직접 오버라이딩 하기 default메서드와 조상 ..
- 인터페이스 타입 매개변수는 인터페이스 구현한 클래스의 객체만 가능 class Fighter extends Unit impletents Fightable { public void move(int x, int y) { /*내용생략*/} public void attack(Fightable f) { /*내용생략*/} } Unit u = new Fighter(); Fightable f = new Fighter(); f.move(100,200); f.attack(new Fighter()); interface Fightable { void move(int x, int y); void attack(Fightable f); //Fightable인터페이스를 구현한 클래스의 인스턴스만 가능 } Fightable인터페이스..
1) 특징 - 추상메서드의 집합 - 구현된 것이 전혀 없는 설계도 (껍데기), 모든 멤버가 public! - 인터페이스의 조상은 인터페이스만 가능(Object가 최고 조상이 아님) - 다중 상속이 가능(인터페이스는 추상메서드 집합이라 충돌할 문제가 없음) interface Fightable extends Moveble, Attackable{} //조상 2개, 멤버 총 2개 (move, attach) interface Movable{ /* 지정된 위치(x,y)로 이동하는 기능의 메서드 */ void move(int x, int y); } interface Attackable{ /* 지정된 대상(u)을 공격하는 기능의 메서드 */ void attack(Unit u); } 2) 추상클래스와의 차이? - 추상클..
1) 특징 - 미완성 설계도. 미완성 메서드를 갖고 있는 클래스 abstract class player { //추상클래스(미완성클래스) abstract void play(int pos); //추상메서드(몸통{}이 없는 미완성 메서드) abstract void stop(); //추상메서드 } - 다른 클래스 작성에 도움을 주기 위한 것. 인스턴스 생성불가! Player p = new Player(); //에러!! 추상클래스는 인스턴스 생성불가 - 상속을 통해 추상 메서드를 완성해야 인스턴스 생성가능 class AudioPlayer extends Player { //AudioPlayer는 완성된클래스, player는 추상클래스 void play(int pos) { /* 내용생략 */ } //추상메서드 구현(..

- 조상타입의 배열에 자손들의 객체를 담을 수 있다. 위를 아래와 같이 변경 (배열에 자손의 객체 담기) ex. 예시 package ch7; class Product2 { int price;//제품의 가격 int bonusPoint; //제품 구매시 제공하는 보너스점수 Product2(int price) { this.price = price; bonusPoint = (int)(price/10.0);//보너스점수는 제품가격의 10% } } class Tv2 extends Product2 { Tv2() { //조상클래스의 생성자 Product(int price)를 호출한다. super(100);//Tv의 가격을 100만원으로 한다. } //Object클래스의 toString()을 오버라이딩 한다. publi..

1) 특징 - 사용할 수 있는 멤버의 갯수를 조절 하는 것 (어떻게? 참조변수!리모콘을 바꿔서) - 조상 자손관계일 때만 형변환 가능 - ex. 예시1 package ch7; class Car { String colorString; int door; void drive() { //운전하는 기능 System.out.println("drive, Brrrr~"); } void stop() { //멈추는 기능 System.out.println("stop!!!"); } } class FireEngine extends Car{ //소방차 void water() { //물 뿌리는 기능 System.out.println("water!!!");} } public class Ex7_7 { public static void..
- Total
- Today
- Yesterday