https://freestyle385.tistory.com/10
https://seolhee2750.tistory.com/209
package pt4;
interface A{
int a = 3;
void abc();
}
public class CreateObjectOfInterface_2 {
public static void main(String[] args) {
// 객체 생성
A a1 = new A() {
public void abc() {
System.out.println("방법 2. 익명 이너 클래스를 이용한 객체 생성");
}
};
A a2 = new A() {
public void abc() {
System.out.println("방법 2. 익명 이너 클래스를 이용한 객체 생성");
}
};
// 메서드 호출
a1.abc();
a2.abc();
}
}
인스턴스 멤버 이너 클래스의 객체 생성 바업
아우터 크래스 아우터 클래스 참조 변수 = new 아우터 클래스();
아우터 클래스.이너 클래스 이너 클래스 참조 변수 = 아우터 클래스 참조 변수 .new 이너 클래스();class A { class B{ } } A a = new A(); A.B b = a.new B();
package pt5;
class A {
public int a = 3;
protected int b = 4;
int c = 5;
private int d = 6;
void abc() {
System.out.println("A 클래스 메서드 abc()");
}
// 인스턴스 이너 클래스
class B{
void bcd(){
// 아우터 클래스의 필드 사용
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
// 아우터 클래스의 메서드 호출
abc();
}
}
public class CreateObjectAndAccessMember {
public static void main(String[] args) {
// 아우터 클래스 객체 생성
A a = new A();
// 멤버 사용
A.B b = a.new B();
b.bcd();
}
}
}
package pt6;
class A {
int a = 3;
void abc() {
int b = 5; // 지역 변수
// 지역 이너 클래스
class B {
void bcd() {
System.out.println(a);
System.out.println(b);
a = 5;
// b = 7;
}
}
B bb = new B();
bb.bcd();
}
}
public class AccessMemberAndLocalVariable {
public static void main(String[] args) {
// 객체 생성 및 메서드 호출
A a = new A();
a.abc();
}
}
package pt7;
class A {
C c = new B();
void abc() {
c.bcd();
}
class B implements C {
public void bcd() {
System.out.println("인스턴스 이너 클래스");
}
}
}
interface C {
public abstract void bcd();
}
public class AnnonymousClass_1 {
public static void main(String[] args) {
// 객체 생성 및 메서드 호출
A a = new A();
a.abc();
}
}
package pt8;
interface A {
public abstract void abc();
}
// 자식 클래스 직접 생성
class B implements A {
public void abc() {
System.out.println("입력매개변수 전달");
}
}
class C {
void cde(A a) {
a.abc();
}
}
public class AnnonymousClass_3 {
public static void main(String[] args) {
C c = new C();
// 방법 1. 클래스명 O + 참조 변수명 O
A a = new B();
c.cde(a);
// 방법 2. 클래스명 O + 참조 변수명 X
c.cde(new B());
}
}
package pt9;
interface A {
public abstract void abc();
}
class C {
void cde(A a) {
a.abc();
}
}
public class AnnonymousClass_4 {
public static void main(String[] args) {
C c = new C();
A a = new A() {
public void abc() {
System.out.println("입력매개변수 전달");
}
};
c.cde(a);
c.cde(new A(){
public void abc() {
System.out.println("입력개변수 전");
}
});
}
}
package pt10;
class Button{
OnClickListener ocl;
void setOnClickListener (OnClickListener ocl) {
this.ocl = ocl;
}
interface OnClickListener {
public abstract void onClick();
}
void onClick () {
ocl.onClick();
}
}
public class ButtonAPIExample {
public static void main(String[] args) {
// 개발자 1. 클릭하면 음악 재생
Button btn1 = new Button();
btn1.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick() {
System.out.println("개발자 1: 음악 재생");
}
});
btn1.onClick();
// 개발자 2. 클릭하면 네이버 접속
Button btn2 = new Button();
btn2.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick() {
System.out.println("개발자 2: 네이버 접속");
}
});
btn2.onClick();
}
}
package exception;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
class A implements Cloneable {
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
public class CheckedException {
public static void main(String[] args) throws InterruptedException, ClassNotFoundException, IOException, CloneNotSupportedException {
Thread.sleep(1000);
Class cls = Class.forName("java.lang.Object");
InputStreamReader in = new InputStreamReader(System.in);
in.read();
FileInputStream fis = new FileInputStream("text.txt");
A a1 = new A();
A a2 = (A)a1.clone();
}
}
package exception;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
public class ExceptionTest1 {
public static void main(String[] args) throws FileNotFoundException {
InputStreamReader isr = new InputStreamReader(System.in);
FileInputStream fis = new FileInputStream("test.txt");
}
}
package exception;
class A{}
class B extends A{}
public class UncheckedException {
public static void main(String[] args) {
System.out.println(3 / 0);
A a = new A();
B b = (B)a;
int[] array = {1, 2, 3};
System.out.println(array[3]);
int num = Integer.parseInt("10!");
String str = null;
System.out.println(str.charAt(2));
}
}
package exception;
public class TryCatchFinally {
public static void main(String[] args) {
try {
System.out.println(3 / 0);
System.out.println("프로그램 종료");
}
catch(ArithmeticException e) {
System.out.println("숫자는 0으로 나눌 수 없습니다.");
System.out.println("프로그램 종료");
}
try {
System.out.println(3 / 0);
}
catch(ArithmeticException e) {
System.out.println("숫자는 0으로 나눌 수 없습니다.");
}
finally {
System.out.println("프로그램 종료");
}
}
}
package exception;
// 1. 사용자 일반 예외
class MyException extends Exception {
public MyException() {
super();
}
public MyException(String message) {
super(message);
}
}
// 2. 사용자 실행 예외
class MyRTException extends RuntimeException {
public MyRTException() {
super();
}
public MyRTException(String message) {
syoer(message);
}
}
class A {
// 3. 사용자 정의 예외 객체 생성
MyException me1 = new MyException();
MyException me2 = new MyException("예외 메시지: MyException");
MyRTException mre1 = new MyRTException();
MyRTException mre2 = new MyRTException("예외 메시지: MyRTException");
// 4. 예외 던지기(throw): 던진 시점에서 예외 발생
void abc_1(int num) {
try {
if(num > 70)
System.out.println("정상 작동");
else
throw me1;
} catch (MyException e) {
System.out.println("예외 처리 1");
}
}
void bcd_1() {
abc_1(65);
}
void abc_2(int num) throws MyException {
if(num > 70)
System.out.println("정상 작동");
else
throw me1;
}
void bcd_2() {
try {
abc_2(65);
} catch (MyException e) {
System.out.println("예외 처리 2");
}
}
}
public class CreateUserException {
public static void main(String[] args) {
A a = new A();
a.bcd_1();
a.bcd_2();
}
}
package exception;
class MinusException extends Exception {
public MinusException() {
super();
}
public MinusException(String message) {
super(message);
}
}
class OverException extends Exception {
public OverException() {
super();
}
public OverException(String message) {
super(message);
}
}
class AAAAA {
void checkScore(int score) throws MinusException, OverException{
if(score < 0) {
throw new MinusException("예외 발생: 음숫값 입력");
}
else if (score > 100)
throw new OverException("예외 발생: 100점 초과");
else
System.out.println("정상적인 값입니다.");
}
}
public class UserExceptionExample {
public static void main(String[] args) {
AAAAA a = new AAAAA();
try {
a.checkScore(85);
a.checkScore(150);
} catch (MinusException | OverException e) {
System.out.println(e.getMessage());
}
}
}
package exception;
public class ExceptionTest3 {
public static void main(String[] args) {
try {
System.out.println("a() 호출전");
a();
System.out.println("a() 호출후");
} catch (Exception e) {
System.out.println("메인 메서드의 catch블럭");
e.printStackTrace();
} finally {
System.out.println("메인 메서드의 finally블럭");
}
System.out.println("수행완료");
}
public static void a() {
try {
System.out.println("b() 호출");
b();
} catch (Exception e) {
// TODO: handle exception
}
}
public static void b() {
try {
System.out.println("b() 호출");
} catch (Exception e) {
// TODO: handle exception
}
}
}
package thread;
class SMIFileThread extends Thread {
@Override
public void run() {
String[] strArray = {"하나", "둘", "셋", "넷", "다섯"};
try {Thread.sleep(10);} catch (InterruptedException e ) {}
for (int i = 0; i <strArray.length; i++) {
System.out.println(" - (자막 번호) " + strArray[i]);
try {Thread.sleep(200);} catch (InterruptedException e) {}
}
}
}
class VideoFileThread extends Thread {
@Override
public void run() {
int[] intArray = {1, 2, 3, 4, 5};
for (int i = 0; i< intArray.length; i++) {
System.out.println("(비디오 프레임) " + intArray[i]);
try {Thread.sleep(200);} catch (InterruptedException e) {}
}
}
}
public class CreateAndStartThread_M1C2 {
public static void main(String[] args) {
Thread smiFileThread = new SMIFileThread();
smiFileThread.start();
Thread videoFileThread = new VideoFileThread();
videoFileThread.start();
}
}