형변환


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


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




* 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

참조변수에 아무것도 넣지않으면 null // 









데브피아 :: 개발자 천국을 꿈꾸는 국내 최대의 SW 포탈

www.devpia.com/


OKKY - All That Developer

okky.kr/


안드로이드 펍 : 안드로이드 폰 사용자와 개발자 모임

www.androidpub.com/


게임코디 :: 게임프로그래머 만담 모임

www.gamecodi.com/





멤버변수 , 멤버함수 : 클래스를 구성하는 구성요소로 클래스를 통해 객체를 생성하면, 각 개체마다 멤버변수와 멤버 함수들이 생성


인스턴스 변수 (instance variable) : 객체마다 하나씩 있는 변수

정적변수 (static variable) : 모든 객체를 통틀어서 하나만 있는 변수

 -> 멤버변수와 다르게 객체를 생성하지 않아도, 아무리 많이 생성해도 하나만 존재하는 변수











[출처] 정적 변수|작성자 아프라카



클래스와 클래스 간의 관계

사용(use) : 하나의 클래스가 다른 클래스를 사용한다.

집합(has-a) : 하나의 클래스가 다른 클래스를 포함한다.

상속(is-a) : 하나의 클래스가 다른 클래스를 상속한다.



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

Day13 상속  (0) 2016.03.30
Day12 변수  (0) 2016.03.29
Day10 public/private  (0) 2016.03.25
Day09 객체지향  (0) 2016.03.24
Day 08 정렬  (0) 2016.03.23

<객체지향> 관련있는 변수와 함수를 하나의 꾸러미로 묶어서 관리, 실제 세계를 모델링하여 소프트웨어를 개발하는 방법 ;

객체 : 힙영역에 할당되있는 모든 데이터 (new연산자를 이용해 만들어진 데이터) 

객체의 상태(state) : 객체의 특징값(속성) = 변수(필드)이다.

객체의 동작(behavior) : 객체가 취할 수 있는 동작 = 함수(메소드)

 

클래스 : 관련있는 함수와 변수를 조합해 만든 자료형 -> 객체란 클래스를 통해 생성해낸 데이터

         


<객체 지향 프로그래밍(Object-Oriented Programming, OOP)>은 컴퓨터 프로그래밍의 패러다임의 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.

객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 또한 프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 보다 직관적인 코드 분석을 가능하게 하는 장점을 갖고 있다 


출처 : https://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D




<구조체 : 다른 타입의 변수들의 묶음 자료형> -> 사용자 정의 자료형

// 배열 : 같은 타입의 변수들의 묶음 자료형





class Student{

int age;

int score; //Student 타입으로 데이터를 한번 생성하면 그안에는

String name;         // 그안에는 정수변수 두개 문자열변수 한개의 조합된 데이터가 만들어짐

}


public class StructTest {

public static void main(String[] args) {

// Student s;//우리가 만든 데이터타입 Student라는 타입의 변수 s를 생성

Student s = new Student();   //-Student데이터의 위치가담김

               s.age = 10; s.score = 100; s.name = "학생1"; System.out.println("나이 : "+ s.age); System.out.println("점수 : "+ s.score); System.out.println("이름 : "+ s.name); } }



<함수(메소드) : 명령어들의 집합>



public static void 그림그리기명령어집합(){

System.out.println("-=-=-=-=-=--=");

System.out.println("-=-=-=-=-=-==");

System.out.println("-=-=-==-=----");

} // 나중에 또 사용될 가능성이 많은 코드들에 이름을 지어주면 재활용하기 쉬움



public static void 그림그리기명령어집합(){

String name ="??";

name ="학생1";

System.out.println("-=-=-=-=-=--=");

System.out.println("-=-=-=-=-=-==");

System.out.println("-=-=-==-=----");

System.out.println("그림그린사람 : " + name);

name = "학생2";

System.out.println("-=-=-=-=-=--=");

System.out.println("-=-=-=-=-=-==");

System.out.println("-=-=-==-=----");

System.out.println("그림그린사람 : " + name);

name = "학생3";

System.out.println("-=-=-=-=-=--=");

System.out.println("-=-=-=-=-=-==");

System.out.println("-=-=-==-=----");

System.out.println("그림그린사람 : " + name);



그림그리기명령어집합("학생1");

그림그리기명령어집합("학생2");    //인자값 // String name = "학생1" 

그림그리기명령어집합("학생3");


public static void 그림그리기명령어집합(String name){

      //매개변수

//함수 실행 전 매개변수 = 인자값 코드를 수행함

System.out.println("-=-=-=-=-=--=");

System.out.println("-=-=-=-=-=-==");

System.out.println("-=-=-==-=----");

System.out.println("그림그린사람 : " + name);









public class StringTest {

public static void main(String[] args) {

String proverb = "A barking dog";

String s1, s2, s3, s4;

System.out.println("문자열의 길이 = " + proverb.length());

s1 = proverb.concat(" never Bites!");

s2 = proverb.replace('b', 'B');

s3 = proverb.substring(2, 5);

s4 = proverb.toUpperCase();

System.out.println(s1);

System.out.println(s2);

System.out.println(s3);

System.out.println(s4);

}

}




 Object 클래스의 주요 메소드 <-- 모든 자바 클래스들은 Object 클래스로부터 상속받는다.


 메소드

설 명 

 String toString()

 현재 객체의 문자열을 반환한다




객체의 생성

Car    myCar;

myCar = new Car();


1. 참조 변수 선언 : Car 타입의 객체를 참조할 수 있는 변수 myCar를 선언한다.

2. 객체 형성 : new 연산자를 이용하여 객체를 생성하고 객체 참조값을 반환한다.

3. 참조 변수와 객체의 연결 : 생성된 새로운 개체의 참조값을 myCar라는 참조 변수에 대입한다.



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

Day11  (0) 2016.03.28
Day10 public/private  (0) 2016.03.25
Day 08 정렬  (0) 2016.03.23
Day 07 배열  (0) 2016.03.22
Day 06 复习  (0) 2016.03.21

+ Recent posts