1. 상속의 개념 : 부모로부터 물려받은 속성이나 행동
2. 객체 정의
class Parent{
String name; //두개의 멤버변수
int age;
public void set_name(String param_n){ //두개의 메서드
name=param_n;
}
public void set_age(int param_i){
age=param_i;
}
}
class Child extends Parent{ //private제외하고 모두 상속
int height; //하나의 멤버변수
public void set_height(int param_h){ //하나의 메서드
height=param_h;
}
}
3. 객체 생성
public static void main(String[] args){
Child c = new Child();
c.set_name("홍길동");
c.set_age(40);
c.set_height(170);
System.out.print(c.name); //홍길동(상속)
System.out.print(c.age); //40(상속)
System.out.print(c.height); //170
}
*print/printIn 구분하기
4. 멤버변수&유효범위
class Parent{
String name; //두개의 멤버변수
int age;
public void set_name(String param_n){ //두개의 메서드
name=param_n;
}
public void set_age(int param_i){
age=param_i;
}
}
class Child extends Parent{ //private제외하고 모두 상속
String name; //부모와 동일한 멤버변수가 선언되어
int age; //자식에서 멤버변수가 재생성
int height;
public void set_height(int param_h){ //하나의 메서드
height=param_h;
}
}
public static void main(String[] args){
Child c = new Child();
c.set_name("홍길동"); //set_neme 메서드는 부모에만 존재
c.set_age(40); //set_age 메서드는 부모에만 존재
c.set_height(170);
System.out.print(c.name); //null
System.out.print(c.age); //null
System.out.print(c.height); //170
}
5. this(나) & super(부모)
class Parent{
String name;
int age;
public void set_name(String param_n){
name=param_n;
}
public void set_age(int param_i){
age=param_i;
}
}
class Child extends Parent{
String name; //세개의 멤벼변수
int age;
int height;
public void set_name(int param_n){ //메서드 오버라이딩
super.name=param_n + "엄마"; //부모super의 name은 인자로 받은 param_n + 엄마
this.name=param_n; //자식의 name은 인자로 받은 param_n
}
public void set_age(int param_i){ //메서드 오버라이딩
super.set_age(param_i + 24); //부모super의 age는 인자로 받은 param_i + 24
age=param_i; //자신의 age는 인자로 받은 param_i
}
}
public static void main(String[] args){
Child c = new Child();
c.set_name("길동이"); //자식의 set_name
c.set_age(40); //자식의 set_age
System.out.print(c.name); //(길동이엄마), 길동이
System.out.print(c.age); //(64), 40
}
다음 Java프로그램의 실행결과로 옳은 것은?
class A{
A(){System.out.printf("%d",10);} //인자가없는 생성자 A 10
}
class B extends A{ //A상속
B(int a){System.out.printf("%d",a);} //100 -> 자식C로부터 받음
}
class C extends B{ //B상속
C(int a){
super(a/10); //부모(B)의 a/10을 받음 = 100 -> 부모B로 끌어올려짐
System.out.printf("%d",a); //1000
}
}
//생성자 순서 : A -> B -> C
//출력순서 "
class Test{
public static void main(String[] args){
A b = new C(1000);
}
}
//10 100 1000
다음 Java프로그램의 실행결과는?
Interface A{ //추상 인터페이스(실존x, 객체생성x)
int a = 2;
}
class B implements A{ //상속이 없으니 구현해라
int b;
B(int i){b=i*a;} //b=1*2=2
int getb(){return b;}
}
public class Test{
public static void main(String[] args){
int a=3; //a=3;
B b1=new B(1); //classB의 i에 1대입, B에서 class A로 부터 받은 a=2대입, b=1*2=2
System.out.printIn(b1.getb()); //2
}
}
* calss + extends
* interface + implements
반응형
'정보처리기사 > [흥달쌤] 실기_JAVA 특강 (완)' 카테고리의 다른 글
JAVA특강 / 06. Static (0) | 2022.04.29 |
---|---|
JAVA특강 / 05. 접근지정자 (0) | 2022.04.29 |
JAVA특강 / 04. 메서드 오버로딩&오버라이딩 (0) | 2022.04.29 |
JAVA특강 / 02. 생성자&예외 (0) | 2022.04.28 |
JAVA특강 / 01. 객체&인스턴스 (0) | 2022.04.28 |