블로그 이미지
주로 인재개발원 등의 사이버학습을 정리, 요약하는 상시학습 블로그입니다. 깨비형
« 2017/10 »
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        

Archive»

체험 블로그 마케팅 서비스 OLPOST

Category»

Notice»

Statistics Graph

 

'오버로딩'에 해당되는 글 2

  1. 2013.03.04 19. 클래스의 확장 - 상속(2)
  2. 2013.02.26 13. 함수에 대하여(2)
 

1. 확장 클래스의 수정


○ 부모 클래스의 변수나 함수를 새롭게 정의해서 사용하는 개념


○ 오버라이딩이라고 한다.


○ 오버라이딩 예제

 class Baseballplayer

 { 

      /* 새롭게 추가된 함수 */

      public void hit()  {

          System.out.println("때린다.") ;

      }


      /* 부모 클래스로부터 물려받은 함수 - 오버라이딩 */

      public void eat()  {

          // System.out.println("먹는다.") ;  기존 클래스

          System.out.println("야구선수가 먹는다.") ;

      }

 }


○ 오버로딩과 오버라이딩

 오버로딩

함수의 이름이 같으나 인자가 서로 다른 함수 

오버라이딩

부모 클래스로부터 상속받은 함수를 자식 클래스에서 새롭게 정의 



2. protected 선언


○ protected 접근 권한

부모 클래스 

자식 클래스(상속) 

다른 클래스(미상속)

private 

× 

× 

 public

○ 

protected 

○ 

× 


private 은 함수로 접근하지 않으면 고칠 수 없다.


○ protected 사용 예제 : protected_01.java

 class Man

 {

      protected String name ;

      public void eat()  {

            System.out.println("먹는다.") ;

      }

 }


 class BaseballPlayer extends Man

 {

      BaseballPlayer(String n)  {

           name = n ;

      }

      public void playHit()  {

            System.out.println(name + "가 때린다.") ;

      }

 }

 

 class protected_01

 {

      public static void main(String args[])

      {

            Man man = new Man() ;

            BaseballPlayer park = new BaseballPlayer("박찬호") ;

            park.playHit() ;

       }

 }


- 실행 결과



3. 수정금지! final


○ 함수나 변수를 더 이상 수정하지 못하도록 고정시킴


○ 테스트 예제 : final_01.java

 class Man

 {

      final String name = "박찬호" ;

      public final void eat()  {

            System.out.println("먹는다.") ;

      }

 }


 class BaseballPlayer extends Man

 {

      public void eat()  {

            System.out.println("야구선수가 먹는다.") ;

      }

 }

 

 class final_01

 {

      public static void main(String args[])

      {

            Man man = new Man() ;

            BaseballPlayer park = new BaseballPlayer() ;

            park.eat() ;

       }

 }


          - 컴파일 결과


· 함수 eat()는 절대 수정할 수 없도록 했는데 오버로딩으로 수정해서 사용하려 했기 때문에 에러가 난다.

· 오버라이딩을 할 수 없다는 에러메시지다.

저작자 표시 동일 조건 변경 허락
신고

1. main() 함수에 대하여


○ 함수를 만들어 사용하는 이유 : 반복적으로 행해지는 각종 연산을 효율적으로 처리하기 위함


○ main() 함수가 받는 인자

- public static void main(String args[])

· String args[] ☜ 문자형 배열

· void ☜ 자료형, 되돌려 주는 값이 없다.


○ 인자 값을 넘겨받는 main() 함수 : main_01.java

 class main_01

 {

         public static void main(String args[])

         {

                 for(int i=0; i < args.length; i++)

                 {

                         System.out.println(args[i]);

                  }

          }

 }


- 실행 결과


2. 오버로딩


○ 오버로딩 : 이름은 같지만 인자가 다른 함수


○ 함수의 오버로딩 예제 : overloading,java

 class overloading

 {

         public static void main(String args[])

         {

                 System.out.println(max(5, 9, 2));

                 System.out.println(max(3.1, 10.33, -32.1));

          }

          /* 정수형 max() 함수 */

         public static int max(int a, int b, int c)

         {

                int max = 0;


                if(a>b)    {

                              max = a;

                }

                else {

                              max = b;

                }

                if(c>max) {

                              max = c;

                }


                return max;


          }


          /* 실수형 max() 함수 */

         public static double max(double a, double b, double c)

         {

                double max = 0;


                if(a>b)    {

                              max = a;

                }

                else {

                              max = b;

                }

                if(c>max) {

                              max = c;

                }


                return max;

          }
 }


- 실행 결과




저작자 표시 동일 조건 변경 허락
신고