Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- Position
- ObjectOutputStream
- FlowLayout
- Database
- FileWriter
- 반응형 웹 프로젝트
- java
- g검정
- GridLayout
- oracle
- CSS
- iframe 태그
- Codility
- HTML
- 반응형웹
- 파이썬
- 퍼셉트론
- 메서드
- inline
- css 기초
- FFT
- 사전학습
- 예제
- 미디어쿼리
- BorderLayout
- html 프로젝트
- html 기초
- 상속
- rnn
- 푸리에 변환
Archives
- Today
- Total
도라에몽주머니
[Java/Eclipse] Java 30일차 본문

동적바인딩(Dynamic Binding)
: 실행중에 동작할 객체를 선택(생성)하는 것
예제
interface와 다형성을 이용하여 프로그램을 완성하시오. (동적바인딩)
1. Shape.java → 인터페이스
- 멤버메소드
onDraw():void
onDelete():void
2. Rectangle.java → Shape 상속
3. Circle.java → Shape 상속
<실행 결과>
1.사각형 2.원 3.종료
select(1-3) : 1
사각형을 그린다
사각형을 지운다
1.사각형 2.원 3.종료
select(1-3) : 2
원을 그린다
원을 지운다
// Prac1.java
package prac1;
import java.util.Scanner;
public class Prac1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 부모 객체로 생성 ; 기본값 null
Shape shape = null;
while(true) {
System.out.println("1.사각형 2.원 3.종료");
System.out.print("select(1-3) : ");
int choose = sc.nextInt();
if(choose == 1) {
// 선택되는 case마다 원하는 자식 객체 생성
shape = new Rectangle();
} else if(choose == 2) {
// 선택되는 case마다 원하는 자식 객체 생성
shape = new Circle();
} else if(choose == 3) {
System.out.println("프로그램 종료.");
break;
}
else System.out.println("1-3 사이의 숫자를 입력해주세요.");
// else case에서 nullpointer error 발생하므로 null check
if(shape != null) {
shape.onDraw();
shape.onDelete();
}
shape = null;
System.out.println();
}
}
}
// Shape.java
package prac1;
public interface Shape {
public void onDraw();
public void onDelete();
}
// Rectangle.java
package prac1;
public class Rectangle implements Shape {
@Override
public void onDraw() {
System.out.println("사각형을 그린다.");
}
@Override
public void onDelete() {
System.out.println("사각형을 지운다.");
}
}
// Circle.java
package prac1;
public class Circle implements Shape {
@Override
public void onDraw() {
System.out.println("원을 그린다.");
}
@Override
public void onDelete() {
System.out.println("원을 지운다.");
}
}
중첩클래스(Nested Class)
: 클래스 내에 정의되어 있는 클래스
- 일반 중첩 클래스
- static 중첩 클래스
- 지역 중첩 클래스
- 익명 중첩 클래스
Static inner class
: 여러개의 클래스를 1개의 클래스로 모아서 사용할 경우, inner 클래스를 static으로 사용함
익명 클래스(Anonymous Class)
: 이름이 없는 클래스(= 무명 클래스). 자식 클래스로만 사용함
{
변수;
함수;
}
상속의 종류
- 일반 상속 (일반 클래스)
: 일반 클래스로 자식 클래스를 만드는 것. 여러 곳에서 계속 사용할 경우 사용.
class AAA {
void ex1() {
}
void ex2() {
}
}
class BBB extends AAA {
void ex2() {
}
}
// 자식 기준
BBB bb = new BBB();
bb.ex1();
bb.ex2();
// 부모 기준
AAA aa = new BBB();
aa.ex1();
aa.ex2();
- 약식 상속 (익명 클래스)
: 익명 클래스로 자식 클래스를 만드는 것. 한번만 상속해서 사용하는 경우 사용.
AAA aa = new AAA() {
void ex2() {
}
};
aa.ex1();
aa.ex2();'Study > Java' 카테고리의 다른 글
| [Java/Eclipse] Java 32일차 (0) | 2022.10.31 |
|---|---|
| [Java/Eclipse] Java 31일차 (0) | 2022.10.28 |
| [Java/Eclipse] Java 29일차 (0) | 2022.10.26 |
| [Java/Eclipse] Java 28일차 (0) | 2022.10.25 |
| [Java/Eclipse] Java 27일차 (0) | 2022.10.24 |