1) 상속구조

 

 

2) Java소스

① Cellphone : tell과 call의 메소드를 가지고 있다.

 

package phone;

 

public class Cellphone {

 

       /**

        * @param args

        */

      

       void tell(){

             System.out.println("전화기능.");

       }

      

       public static void main(String[] args) {

             // TODO Auto-generated method stub

       Cellphone c1 = new Smartphone();

       Cellphone c2 = new Featurephone();

       Cellphone c3 = new IPhone();

       Cellphone c4 = new Android();

      

       call(c1);

       call(c2);

       call(c3);

       call(c4);

      

       }

      

       public static void call(Cellphone m){

             m.tell();

       }

      

}

 

②  Featuerphone 클래스 : Cellphone의 필드와 메소드를 상속받는다.

 

package phone;

 

public class Featurephone extends Cellphone {

      

       void cacao(){

             System.out.println("카톡안됌 ㅅㄱ");

       }

       @Override

       void tell() {

             // TODO Auto-generated method stub

             System.out.println("2G 또는 3G");

       }

       /**

        * @param args

        */

       public static void main(String[] args) {

             // TODO Auto-generated method stub

             new Featurephone().cacao();

            

       }

      

}

 

③ Smartphone 클래스 : Smartphone클래스는 Cellphone클래스의 필드와 메소드를 상속받는다.

 

package phone;

 

public class Smartphone extends Cellphone {

      

       void cacao(){

             System.out.println("카톡가능");

       }

      

       @Override

       void tell() {

             // TODO Auto-generated method stub

             System.out.println("3G or 4G");

       }

       /**

        * @param args

 

        */

      

       public static void main(String[] args) {

             // TODO Auto-generated method stub

             new Smartphone().tell();

             Cellphone c = new Smartphone();

             System.out.println(c);

       }

      

}

 

④ Iphone 클래스 : Iphone 클래스는 Smartphone클래스의 필드와 메소드를 상속받는다. 

 

package phone;

 

public class IPhone extends Smartphone{

 

       void market(){

             System.out.println("앱스토어");

       }

       void cacao() {

             System.out.println("앱스토어에서 구매");

       }

      

       @Override

       void tell() {

             // TODO Auto-generated method stub

             System.out.println("아직 3G ㅠㅠ");

       }

       /**

        * @param args

        */

      

       public static void main(String[] args) {

             // TODO Auto-generated method stub

            

       }

 

}

 

⑤ Adroid 클래스 : Android 클래스는 Smartphone 클래스의 필드와 메소드를 상속받는다. 

 

package phone;

 

public class Android extends Smartphone {

      

       void market() {

             System.out.println("안드로이드마켓");

       }

       void cacao() {

             System.out.println("안드로이드마켓에서 구매");

       }

      

       @Override

       void tell() {

             // TODO Auto-generated method stub

             System.out.println("LTE 한다.");

       }

       /**

        * @param args

        */

       public static void main(String[] args) {

             // TODO Auto-generated method stub

       Android c = new Android();

      

       Cellphone.call(c);

      

      

       }

 

}

'Java > Java Advanced' 카테고리의 다른 글

Java Advanced 1일차 첫번째) Inheritance  (0) 2012.09.10
블로그 이미지

모데스티

,

0) REVIEW

  ① Object (객체) : 모든 것, Class로 만들어 진다.

  ② Class(클래스) : 객체를 만들어 내는 틀

  ③ 접근제한자 

     Private : 클래스 안에서만 사용가능, 상속x

      ⓑ Default : 같은 패키지안에서 상속가능

      ⓒ Protected : 패키지가 다르더라도 상속받으면 가능

      ⓓ Public : 제한이 없다.

 

1) Inheritance(상속)

ⓐ Coffee  : Mocha Class의 부모클래스인 Coffee는 drink와 smell의 메서드를 가지고 있다.

package inheritance;

 

public class Coffee {

      

       // 필드(Field) : 속성(Attribute, Property), 멤버변수(Member Variable), 전역변수...

      

       String origin; // 원산지

       int size; // 용량

      

       void smell() {

             System.out.println("냄새가 나다");

       }

      

       void drink() {

             System.out.println("커피를 마시다");

       }

       /**

        * @param args

        */

       public static void main(String[] args) {

             Coffee c = new Coffee(); // 객체 생성

             c.size = 300;

             System.out.println(c.size);

             Coffee c1 = new Coffee();

             c1.size =500;// hashcode 가지고 있다.

             System.out.println(c1.size);

             c = c1;

             System.out.println(c.size);

             System.out.println(c1.size);

       }

 

}

 

ⓑ Mocha : Coffee의 부모클래스에서 필드와 메소드를 상속받는다.

                     Coffee의 클래스의 drink()를 오버라이딩(메소드 재정의)하고 있다.

package inheritance;

 

public class Mocha extends Coffee {

      

       boolean isCream;

      

       // private < default < protected < public >> 접근제한자

       // private : 클래스 안에서만 접근가능, 상속x

       // default : 같은 패키지 안에서 접근가능

       // protected : 다른 패키지라도 상속받은 경우 접근가능

       // public : 제한x

      

       // 생성자가 하나도 없으면 컴파일러에 의해서  기본생성자가 만들어진다.

       public Mocha() {

            

       }

      

       // annotation

       @Override

       void drink() {

             super.drink(); // 부모(super)클래스의 drink메서드도 같이 호출

             System.out.println("모카 커피를  마셔요.");

       }

       /** 

        * @param args

        */

       public static void main(String[] args) {

            

             new Mocha().drink();// Mocha객체 생성

             System.out.println(32);

             System.out.println("문자");

             Coffee m = new Mocha();

             Object o = m;

             System.out.println(m);

             System.out.println(o);

             Mocha m2 = new Mocha();

             m2.drink();

             m.drink();

     // 원래 Mocha이므로 Mocha drink 실행 => m 실체를 알자!!!

             // o.drink();

                >> 불가능 Object에는 drink()메서드가 정의되어 있지 않기 때문에

             // p(m)(x) : m 타입은 Coffee이므로

             p(m2);

             p(3); // 참조형이 아니라 기본형이기 때문에 참조형으로 박싱(Integer)

             // Wrapper class : Byte, Short, Integer, Long, Double,

     Boolean, Character, Float

             p("문자");

       }

      

       @Override

       //

       public String toString() {

             // TODO Auto-generated method stub

             return "나는 모카! 일반 커피가 아니지";

       }

       // static 있을 경우 클래스 소유, 없으면 객체소유

       // 객체 : 모든

       // 클래스 : 객체를 만들어내는

      

       // Static >> 클래스가 로딩(메모리에 적재) 될때 같이 로딩된다.

       //           접근할 클래스명.메서드명() 이름 형태로 불러온다.

       public static void p(Mocha m) { // 유연하지 못하다.

  // 자동으로 toString 실행된다

             System.out.println(m.toString());       

   }

 

       public static void p(Object m) { // 유연하다.

             System.out.println(m);

       }

 

}

 

 

 

'Java > Java Advanced' 카테고리의 다른 글

Java Advanced 1일차 두번째) 상속구조 만들기  (0) 2012.09.10
블로그 이미지

모데스티

,