달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

'C. Java'에 해당되는 글 37

  1. 2018.01.18 자바 추상클래스 final 알아보기
2018. 1. 18. 21:27

자바 추상클래스 final 알아보기 C. Java2018. 1. 18. 21:27

다형성을 위해 추상클래스를 사용한다.

 
추상 클래스
: 객체를 생성할 수 없는 클래스 abstract 을 class 앞에 기술해야한다.
  추상클래스는 일반메소드나 속성, 상수들을 가질수 있다.
  하지만 추상클래스의 일반 메소드나 속성은 서브 클래스에서  반드시 오버라이딩해야만 객체를 생
  성하여 사용할수 있다.
                                         

추상 메소드

: 내용을 갖지 않는 메소드로 메소드 앞에 abstaract를 붙여야한다.
  추상 메서드는 추상클래스를 상속받는 서브 클래스에서 어떻게 동작할지 반드시 구현되어야 한다.
  추상메서드는 추상클래스만이 가질수 있다.

ex) abstract class A {                            //추상클래스
   
             abstract  void method1();        //추상메소드
             void method2(){ System.out.println("그냥 메소드");} 
      }
      class Sub extends  A {             
      //서브클래스에서 추상메소드를 오버라이딩 하지 않으려면 서브 클래스 역시 
상클래스여야 한다.
   
             void method1(){ System.out.println("추상메소드 재정의");} 
             //추상메소드를 반드시 오버라이딩 해야한다.
      }
       
      class AMain {                                    //추상클래스

           
public static void main(String[] args){
                 
                   Sub ss = new Sub();    //추상클래스의 상속을 받은 서브 클래스로 객체 생성
                   ss.method1;     // 추상 메서드를 서브 클래스에서 오버라이딩하였기때문에 사용가능
                   ss.method2;                         // 추상 클래스에서 구현한 메서드를 상속받아 사용함
            }
       }
  
    
업캐스팅을 사용한 다형성 제공
추상클래스와 업캐스팅 : 추상클래스로 레퍼런스 변수를 선언할수 있고, 이 변수는 업캐스팅이 가능하다. 그래서 서브 클래스로 생성한
객체를 참조하는 용도로 사용된다.
 
ex)  abstract class Sc { abstract void draw(); }
       
       class Circ extends sc{ void draw(){ System.out.println("원그리기로 재정의") }
       class Rect extends sc{ void draw(){ System.out.println("사각형그리기로 재정의") }
       public class ScMain(){
             punlic static void main(String[] args){
                    sc  ref;
                    ref = new Circ(); //업캐스팅
                    ref.draw();                                   //->원을그린다.
                   
                    ref = new Rect(); //업캐스팅
                    ref.draw();                                   //->사각형을 그린다.
             }
       }
 
 
final  => 변수    앞에 붙이면 : 변수를 상수화 시킨다 (변수에 저장된값이 변하지 않음)
              메서드 앞에 붙이면 : 서브 클래스에서 오버라이딩 하는것을 허락하지 않음
              클래스 앞에 붙이면 : 더이상 상속을 허락하지 않음
 
 
              ex)  class Exam_03{
                      
                         private final double pi = 3.141592;
                      
                         public double getPi(){
                              return  pi;
                         }

                     }

                     public class exam_main {
                        
                         public  static void main(String[] ar){
                               Exam_03  es = new Exam_03();
                               
                               System.out.println( es.getPi() );

                               final  int  x= 100;
                                ......
                                .......
                               
                         }
                     }                    
  


'C. Java' 카테고리의 다른 글

VI 편집기 명령어  (0) 2020.12.15
Controller.java  (0) 2017.07.02
java 자바 자료모음  (0) 2017.07.02
java 자바 자료형  (0) 2017.07.02
java 자바 path 설정  (0) 2017.07.02
:
Posted by sfeg