인터페이스
package ch08;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MyFrame extends MFrame implements ActionListener{
Button btn;
boolean flag = false;
public MyFrame() {
btn = new Button("Button");
add(btn,BorderLayout.SOUTH);
setBackground(Color.ORANGE);
btn.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
if(flag)
setBackground(Color.ORANGE);
else
setBackground(Color.PINK);
flag=!flag;
}
public static void main(String[] args) {
new MyFrame();
}
}
package ch08;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MyFrame2 extends MFrame{
Button btn;
boolean flag = false;
public MyFrame2() {
btn = new Button("Button2");
add(btn,BorderLayout.SOUTH);
setBackground(Color.GREEN);
MyAction ma = new MyAction();
btn.addActionListener(ma);
}
class MyAction implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
if(flag)
setBackground(Color.GREEN);
else
setBackground(Color.YELLOW);
flag=!flag;
}
}
public static void main(String[] args) {
new MyFrame2();
}
}
package ch08;
public class interfaceEx6 implements Runnable{
String name;
public interfaceEx6(String name) {
this.name = name;
}
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(i+ " " + name);
try {
Thread.sleep(500);
} catch (Exception e) {}
}
}
public static void main(String[] args) {
interfaceEx6 a= new interfaceEx6("첫번째");
interfaceEx6 b= new interfaceEx6("두번째");
new Thread(a).start();
new Thread(b).start();
}
}
내부클래스
- 클래스 안에 선언
- 클래스 안에 선언이지만 static 클래스로 선언(활용 : 1%))
- 메소드안에 클래스 선언(활용 : 10%)
- 메소드 안에 선언과 동시에 생성하는 익명클래스(활용 : 100%)
package ch09;
interface MyInter{
void prn();
}
class Outer1{
class Inner1{
}
static class Inner2{
}
void prn() {
class Inner3{
}
new MyInter() {
@Override
public void prn() {
}
};
}
}
public class InnerEx1 {
public static void main(String[] args) {
}
}
package ch09;
class Outer2{
int a = 22;
void p() {
System.out.println("a = " + a);
}
class Inner2{
int b = 23;
void p1() {
p();
System.out.println("a + b = " + (a+b));
}
}
}
public class InnerEx2 {
public static void main(String[] args) {
Outer2 out = new Outer2();
Outer2.Inner2 in = out.new Inner2();
in.p1();
}
}
package ch09;
interface MyInter1{
void prn();
}
abstract class MyAbst1{
abstract void prn();
}
class A implements MyInter{
@Override
public void prn() {
System.out.println("일반적인 구현 방법");
}
}
class B extends MyAbst1{
@Override
void prn() {
System.out.println("일반적인 구현 방법2");
}
}
public class AnonymousEx1 {
public static void main(String[] args) {
A a = new A();
a.prn();
B b = new B();
b.prn();
new MyInter1() {
@Override
public void prn() {
System.out.println("익명클래스 구현 방법");
}
}.prn();
new MyAbst1() {
@Override
void prn() {
System.out.println("익명클래스 구현 방법2");
}
}.prn();
}
}
package ch09;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MyFrame extends MFrame {
Button btn;
public MyFrame() {
add(btn = new Button("Exit"), BorderLayout.SOUTH);
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
}
public static void main(String[] args) {
new MyFrame();
}
}
예외처리
package ch10;
public class ExceptionEx1 {
public static void main(String[] args) {
try {
int a = 10;
int b = 0;
System.out.println("a + b " + (a+b));
System.out.println("a - b " + (a-b));
System.out.println("a * b " + (a*b));
} catch (Exception e) {
System.out.println("0으로 나누면 안되요");
}
System.out.println("성공");
}
}
package ch10;
public class ExceptionEx2 {
public static void main(String[] args) {
try {
int arr[] = new int[3];
arr[0] = 10;
arr[1] = 10;
arr[2] = 10;
arr[3] = 10;
System.out.println("실행 되나요?");
} catch (Exception e) {
System.out.println("배열 예외입니다");
} finally {
System.out.println("finally~");
}
}
}
package ch10;
import java.util.InputMismatchException;
import java.util.Scanner;
public class ExceptionEx3 {
public static void main(String[] args) {
Scanner s = null;
try {
int a, b;
s= new Scanner(System.in);
System.out.print("첫번째 숫자 : ");
a = s.nextInt();
System.out.print("두번째 숫지 : ");
b = s.nextInt();
System.out.println(a+"/"+b+"="+(a/b));
} catch (ArithmeticException e) {
System.out.println("0으로 입력하면 안돼요.");
} catch (InputMismatchException e) {
System.out.println("숫자만 입력을 해야 합니다.");
} finally {
s.close();
}
}
}
- 다중 상속일 경우 하위 Exception 이 위에 온다.
package ch10;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class ExceptionEx4 {
public static void main(String[] args) {
try {
FileReader fr = new FileReader("ch10/test.txt");
int a;
while ((a = fr.read()) != -1) {
System.out.print((char)a);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}