정보처리기사/[흥달쌤] 실기_JAVA 특강 (완)

JAVA특강 / 04. 메서드 오버로딩&오버라이딩

web_seul 2022. 4. 29. 15:02
반응형

1. 오버로딩&오버라이딩 개념

- 메서드 오버로딩 : 같은 이름의 메서드를 인자만 다르게하여 작성

- 메서드 오버라이딩 : 부모클래스의 메서드를 자식클래스에서 재정의

2. 오버로딩

class Person{
  String name;
  int age;
  int height;
  public void set_data(String p_name){
    name=p_name;
  }
  public void set_data(String p_name, int p_age){
    name=p_name;
    age=p_age;
  }
  public void set_data(String p_name, int p_age, int p_height){
    name=p_name;
    age=p_age;
    height=p_height;
  }
}

public static void main(String[] args){
  Person p1=new Person();
  p1.set_data("홍길동");
  
  Person p2=new Person();
  p2.set_data("홍길동", 40);
  
  Person p3=new Person();
  p3.set_data("홍길동", 40, 170);
}
//p1, p2, p3 세개의 오버로딩 생성

3. 오버라이딩

class Child extends Parent{
  public void set_name(String param_n){
    System.out.printIn("자식의 이름변경");
  }
  public void set_height(int param_h){
    System.out.printIn("자식의 키변경");
  }
}

public static void main(String[] args){
  Child c = new Child();
  c.set_name("홍길동");	//자식의 이름변경
  c.set_age(40);	//부모의 나이변경
  c.set_height(170);	//자식의 키변경
}
class Child extends Parent{
  public void set_name(String param_n){
    System.out.printIn("자식의 이름변경");
  }
  public void set_height(int param_h){
    System.out.printIn("자식의 키변경");
  }
}

public static void main(String[] args){
  parent c = new Child();	//parent가 child를 생성했을 때
  c.set_name("홍길동");	//자식의 이름변경
  c.set_age(40);	//부모의 나이변경
  c.set_height(170);	//Error
}

 

다음 Java 프로그램의 실행 결과는?

class A{
  void f(){System.out.printIn("0");}
  void f(int i){System.out.printIn(i);}
  void f(int i, int j){System.out.printIn(i+j);}
  
  public static void main(String[] args){
    A a=newA();
    a.f(25,25);
  }
}
//50

 

다음 Java 프로그램의 출력 결과는?

class Shape{
  void draw(){
    System.out.printIn("Shape");
  }
}
class Circle extends Shape{
  void draw(){	//오버라이딩
    System.out.printIn("Circle");
  }
}
class Square extends Shape{
  void draw(){	//오버라이딩
    System.out.printIn("Square");
  }
}

public class Shapes{
  public static void main(String[] args){
    Shape s1 = new Shape();
    Circle s2 = new Circle();
    Square s3 = new Square();
    Shape s;	//무슨의미???????????
    s=s1; s.draw();
    s=s2; s.draw();
    s=s3; s.draw();
  }
}

//Shape Circle Square

 

다음 Java 프로그램의 실행 결과는?

class A{
  static void f(){System.out.print("1");}	//static이 있으므로 오버라이딩xx
  void g(){System.out.print("2");}	//오버라이딩oo
}
class B{
  static void f(){System.out.print("3");}
  void g(){System.out.print(4);}
}

public class C{
  public static void main(String[] args){
    A a = new B();
    a.f();	//오버라이딩이 되지않으므로 class A의 f()값, 1
    a.g();	//오버라이딩이 되므로 class B의 g()값, 4
  }
}

* static은 각각의 메모리영역에 따로 저장됨

 

4. 상속과 오버라이딩 객체 생성

 

 

반응형