1교시
---구현클래스---
인터페이스를 사용해 구현하겠다는 선언
implements라는 키워드를 사용하여 사용할수있다.
---인터페이스 장점---
실제 구현 클래스의 내용을 전혀 보지 않고 개발코드로 객채 사용가능
---모듈화---
객체 기반 코드에서 객체 변경이 필요할때 개발 코드의 수정을 최소화 할수있다,
2교시
---다중인터페이스의 구현---
1. 하나의 클래스로 여러 개의 인터페이스를 구현할수있다.
2. 선언한 모든 인터페이스에 대한 추상 메서드를 모두 구현할수있다.
3. 상속뿐만아니라 인터페이스의 구현관계에서도 타입변환이 가능하다.
---인터페이스의 상속---
인터페이스 끼리는 상속이 가능하다.
다중상속이 가능하다.
---내부클래스---
클래스 안에 만들어진 또 다른 클래스로 중첩 클래스라고도 한다.
클래스 안에 다른 클래스를 선언하는 이유는 두개의 클래스가 서로 긴밀한 관계를 맺고 있기 때문이다.
---내부클래스의 장점---
두 클래스 멤버들간에 손쉽게 접근할수있다.
불필요한 클래스를 감춰서 코드의 복잡성을 줄일 수 있다.
---내부클래스 종류---
1.인스턴스 클래스
외부클래스의 필드와 같은 위치에 선언 (외부클래스의 멤버처럼 다루어진다.)
주로 외부클래스의 필드와 관련된 작업에 사용될 목적으로 선언
2.정적내부 클래스
외부 클래스의 클래스변수와 같이 static키워드를 부여
3.지역내부클래스
외부클래스의 메서드 내부에서 선언하여 사용
메서드 영억에서 선언되기 때문에 메서드 내부에서만 사용 가능
---인스턴스 클래스---
class Calculator{
private int val1;
private int val2;
public Calculator(int val1,int val2) {
this.val1=val1;
this.val2=val2;
}
public class Calc{
public int add(){
return val1 + val2;
}
}
}
public class CalculatorExample {
public static void main(String[] args) {
Calculator cal = new Calculator(10, 11);
Calculator.Calc c =cal.new Calc();
System.out.println("합 : "+c.add());
}
}
---객체선언 순서---
Outer outer = new outer();
Outer.inner 변수명 = outer.new Inner();
---정적내부 클래스---
1. 외부클래스의 필드 또는 메서드를 정적 내부 클래스 안에서는 사용할수없다.
2. 정적 변수 또는 정적 메서드를 호출하는것은 가능하다.
class PrintOut{
private int val = 1;
private static int count =1;
public static class Out{
public void println() {
System.out.println(count);
}
}
}
public class StaticClassExample {
public static void main(String[] args) {
PrintOut.Out out = new PrintOut.Out();
out.println();
}
}
3교시
---지역내부클래스---
public class LocalClassExample {
private int speed = 10;
public void getUnit(String unitName) {
class Unit{
public void move() {
System.out.println(unitName + "이 "+ speed +" 속도로 이동합니다.");
}
}
Unit unit = new Unit();
unit.move();
}
public static void main(String[] args) {
LocalClassExample local = new LocalClassExample();
local.getUnit("마린");
}
}
---익명클래스---
1. 다른 내부 클래스와는 달리 이름이 없는 클래스이다.
2. 익명 클래스는 클래스의 선언과 객체의 생성을 동시에 하므로 한 번만 사용할수있다.
3. 오직 하나의 객체만을 생성할수 있는 일회용 클래스
4. 따라서 생성자를 선언할 수도 없으며, 둘 이상의 인터페이스를 구현할수도 없다.
5.인터페이스의 기능을 구현할때 사용한다.
6.인터페이스를 클래스를 직접 생성하여 구현하는것이 아니라 익명클래스로 선언하여 기능을 직접 구현할수있다.
---예외처리---
1. 자바프로그램을 실행하다보면 갑자기 프로그램이 종료되거나, 어떤 원인에 의해 잘못 동작하여 오류 메세지가 나타는 등 예기치 못한 오류가 발생한다.
2. 전자는 우리가 해결할수 없는 시스템 에러가 발생해 프로그램이 종료된경우
3. 후자는 프로그램 사용중 발생한 오류를 개발자가 처리해 메세지가 출력된경우이다.
---에러---
1. 시스템에 비정상적인 상황이 생겼을 때 발생
2. 외부 요인일수도 있고, 프로그램 구동 중에 발생하는 치명적인 오류일수도 있다.
3. 이러한 에러들은 개발자가 예측하거나 처리 할수 없는 영역
---에러의 종류---
1. OutOfMemoryError- 프로그램 실행중 메모리 부족
2. IoError - 입출력 에러
3. StackOverFlowError - 가용 메모리 부족 현상, 재귀 호출 문제시 발생
---예외---
1. 프로그램 구동중에 나타나는 오류들을 말한다.
2. 문법적으로는 문제가 없어 보이지만 실제 운영중에 생기는 문제들이다.
3. 예외는 체크 예외와 비체크 예외 두가지가 있다.
---체크예외---
1. 자바 소스를 컴파일하는 과정에서 검사한다.
2. 보통 문법적으로 강제하여 예외처리를 해야 하는경우
IOExcrption
SQLExcrption
---비체크 예외---
1. 컴파일 과정에서 검사하지 않으므로 사용자의 경험이나 테스트로 찾아야하는경우
NullPointerException
IndexOutOfBoundsExption
ClassNotFoundException
'(학) (공) (자)' 카테고리의 다른 글
01.22(16일차) (0) | 2024.01.22 |
---|---|
01.18(14일차) (0) | 2024.01.18 |
01.15(11일차) (1) | 2024.01.15 |
01.12(10일차) (0) | 2024.01.12 |
01.11(9일차) (0) | 2024.01.11 |