interface

다중 상속의 장점을 사용하기 위해.

기능확장이 편함.
약결합(loosely coupied)을 구현하여, 객체간의 유연성을 높이기 위해.

문법

접근지정자 interface 인터페이스명 extends 부모인터페이스명,,,,{}

  • 인터페이스는 객체화가 되지 않는다. (생성자 없음.)
public interface 인터페이스명{
	상수
    abstract method();
    //구현클래스가 반드시 override해야 할 일의 목록.
}

클래스가 implements키워드를 사용하여 인터페이스를 구현하여 사용.
public class 클래스명 implements 인터페이스명,,,{
abstract method의 override
}

  • 클래스에서 인터페이스를 구현한다.
    구현하는 인터페이스 상속줄에 있는 모든 abstract method는 구현 클래스에서 반드시 override 해야한다.

Inner class

: 이벤트를 처리하기 위한 목적으로 만들어진 클래스

  • 안쪽 클래스에서는 바깥 클래스의 자원을 마음대로 사용할 수 있지만,
    바깥 클래스에서는 안쪽 클래스의 자원을 사용하려면 반드시 객체화하여 사용한다.
  • 안쪽 클래스를 인스턴스 변수처럼 사용할 때 정의.
  • 안쪽 클래스의 접근지정자는 public.

객체화

  1. 바깥클래스의 객체화
    바깥클래스명 객체명 = new 바깥클래스생성자();
    Outter out = new Outter();
  2. 바깥클래스의 객체를 사용하여 안쪽클래스를 객체화.
    바깥클래스명.안쪽클래스명 객체명 = 바깥 객체명.new 안쪽클래스의 생성자();
    Outter.Inner in = out.new Inner();
  • instance영역은 바깥클래스의 객체명 대신 this를 사용가능.
    Outter.Inner in = this.new Inner();//main에서는 out 붙여야함.
    Outter.Inner in = new Inner(); //인스턴스영역이면 this도 생략 가능.

nested class(중첩클래스)

  • 안쪽 클래스를 static변수처럼 사용할 때.(객체화하지 않고 사용)
  • 안쪽 클래스는 모두 static으로 만든다.

class Test{
int i;
public void test(){
}
static class In{ //객체화를 하지 않고 클래스명, 변수명, 클래스명.method으로 사용한다.
static int j;
public static void temp(){
}
}//인스턴스 영역
}//인스턴스 영역

static class Inner {
// nested클래스에서 inner클래스는 주로 안에서만 쓰이기 때문에 
//접근지정자를 안쓴다.(붙여도 되나 무쓸모)
// 일반클래스 아님. 생성자 만들지 않음.
        // 변수나 method는 static으로 만들어 객체없이 사용하도록 한다.
		static int inI;

		public static void inMethod() {
			System.out.println("안쪽 클래스의 method");
            // 바깥클래스 객체 선언 안해도 쓸 수 있음.
//			outI = 10; // instance영역의 변수와 method는 사용할 수 없다. 선언하면 쓸 수 있음.

			outJ = 20;
			NestedOutter.outStaMethod();// static 자원은 객체없이 쓸 수 있음.
		}// inMethod
	}// NestedInner

local class

  • method안에서 class를 정의할 때.
  • 생성된 인스턴스는 method안에서만 사용.
  • local class에서는 지역변수를 사용할 때 final이 붙어있는 지역변수만 사용가능.

anonymouse inner class

  • 이름이 없는 클래스
  • 클래스를 arguments로 사용
  • 클래스 파일을 별도로 생성하지 않고, 부모클래스를 사용하여 객체로 만들어야 할 때.
    anonymous inner class method명( new 생성자() { } );

자주 사용하는 클래스들.

문자열 관련

String, StringBuffer, StringBuilder, StringTokenizer

  • String
    짧은 문자열을 다룰 때 사용.
    문자열 안에서 특정문자를 기준으로 잘라내어 배열로 저장할 때.
    String csvData = "Java, Oracle, JDBC";
    csvData : Comma Separated Value : , 또는 일정한 문자로 구분되어진 값.

String[] arr = csvData.split("구분할 문자열( , )");

수학 관련

  • Math
    생성자가 없으므로 객체화될 수 없는 클래스
    method에 입력값
  • 절대값 양수 = Math(음수)
  • 반올림
    정수형 변수명 = Math.round(실수);
  • 올림
    실수 = Math.ceil(실수);
  • 내림
    Math.floor(실수);
  • 절사 => method 없음.
    (int)실수

날짜 관련

Date, Calender

formatter

SimpleDateFormat, DecimalFormat

난수

Random

double num = Math.random();//0.00000~16 ~ 0.9999~16의 수 중 하나가 나옴.
System.out.println("발생한 난수 : " + num);
System.out.println("범위의 난수 : " + num*10); // 0~9까지 10개의 난수
System.out.println("정수 범위의 난수 : " + (int)(num*10)); // 0~9까지 10개의 난수

지역

Local

0개의 댓글