형변환


부모클래스타입으로 자식객체를 참조했을때는 부모클래스에 존재하는 멤버변수와 멤버함수만 접근이 가능,자식영역에만 존재하는 멤버에 접근불가


자식클래스로의 형변환을 통해 자식에만 존재하는 멤버에 접근가능




* instanceof 연산자를 사용한다. *


[참조변수] instanceof [클래스명]   ->  참조변수가 실제 참조하고 있는 객체가 클래스명 타입의 변수로 참조가 가능하면 true 아님 false







추상클래스


추상메소드를 가지고있는 클래스

자바에서의 추상메소드는 abstract 키워드를 붙여준다.


(부모클래스일수록 개념이 추상적이고, 특정 기능이 어떻게 구현될지 애매하다.) 


추상클래스는 상속받으면 추상메소드를 구현해야만 하는 의무를 가지게 됨.

(추상메소드를 구현하던, 자기 자신이 추상클래스가 되던)


추상클래스는 미완성의 설계도 이기 때문에 객체를 만들 수 없을(객체화 할 수 없음)




내부클래스


클래스 안에 다른 클래스를 정의




//바깥 클래스

class A {

A(){System.out.println("A 객체가 생성됨");}

/**인스턴스 멤버 클래스**/

class B {

B(){System.out.println("B 객체가 생성됨");}

int field1;

//static int field2;

void method1(){}

//static void method2() {}

}

//정적 멤버 클래스

static class C {

C() {System.out.println("C 객체가 생성됨");}

int field1;

static int field2;

void method1(){}

static void method2(){}

}

void method(){

//로컬 클래스

class D {

D(){System.out.println("D 객체가 생성됨");}

int field1;

void method1(){}

}

D d = new D();

d.field1 = 3;

d.method1();

}

} 

 


public class Main {

public static void main(String[] args) {

A a = new A();

//인스턴스 멤버 클래스 객체 생성

A.B b = a.new B();

b.field1 = 3;

b.method1();

//정적 멤버 클래스 객체 생성

A.C c = new A.C();

c.field1 = 3;

c.method1();

A.C.field2 = 3;

A.C.method2();

//로컬 클래스 객체 생성을 위한 메소드 호출

a.method();

}

}







무명 클래스(anonymous class)


클래스 몸체는 정의되지만, 이름은 없는 클래스

객체를 생성하면서 클래스를 정의하는 방법(1회성 클래스 구현)


interface RemoteController

{

void turnOn();

void turnOff();

}

class TVRemoteController implements RemoteController{


@Override

public void turnOn() {

}


@Override

public void turnOff() {

}

}


public class AnnonymousTest {

public static void main(String[] args) {

RemoteController rc = new TVRemoteController();

}

}




인터페이스 타입의 참조변수는 자신 인터페이스를 implements한 클래스의 객체를 참조할 수 있음.


대신에 인터페이스 타입의 참조변수로 객체를 참조했을때는 인터페이스에 존재하는 메소드만 호출이 가능.









' IOT 기반 응용 SW과정 > Java, Eclipse ' 카테고리의 다른 글

Day16 패키지  (0) 2016.04.04
Day15 전략패턴  (0) 2016.04.01
Day13 상속  (0) 2016.03.30
Day12 변수  (0) 2016.03.29
Day11  (0) 2016.03.28

+ Recent posts