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. 상속과 오버라이딩 객체 생성

반응형
'정보처리기사 > [흥달쌤] 실기_JAVA 특강 (완)' 카테고리의 다른 글
JAVA특강 / 06. Static (0) | 2022.04.29 |
---|---|
JAVA특강 / 05. 접근지정자 (0) | 2022.04.29 |
JAVA특강 / 03. 상속 (0) | 2022.04.29 |
JAVA특강 / 02. 생성자&예외 (0) | 2022.04.28 |
JAVA특강 / 01. 객체&인스턴스 (0) | 2022.04.28 |