1. 상속(**)
- 형식
...
}
class 자식클래스 extends 부모클래스{
..
}
- 부모의 private멤버는 자식클래스에서 직접 접근할수 없다.
- 부모의 protected멤버는 외부(다른패키지)에서는 접근할 수 없고 자식클래스에서는 접근할 수 있다.
ex> 부모 : 이름, 주민번호 private 선언. 자식에서 바로 사용못함.
메소드를 이용하여 변수에 값 set.
class Person
{
//이름
private String name;
//주민번호
private String snum;
public void setPer(String name,String snum)
{
this.name=name;
this.snum=snum;
}
public void printPer()
{
System.out.println("이름:"+name+",주민번호:"+snum);
}
}
//자식클래스
{
//학번
private int stuNum;
public void setStu(String name,String snum,int stuNum){
setPer(name,snum);
this.stuNum=stuNum;
}
public void printStu(){
printPer();
System.out.println("학번:"+stuNum);
}
}
class Test03_inheritance{
public static void main(String[] args){
Student stu=new Student();
stu.setStu("홍길동","123456-1234567",987654);
stu.printStu();
}
}
- protected 멤버는 자식클래스에서 접근이 가능하다.
ex> 부모 : 이름과 주민번호는 protected 로 선언. 자식에서 사용가능.
class Person
{
//이름
protected String name;
//주민번호
protected String snum;
public void setPer(String name,String snum)
{
this.name=name;
this.snum=snum;
}
public void printPer()
{
System.out.println("이름:"+name+",주민번호:"+snum);
}
}
//자식클래스
{
//학번
private int stuNum;
public void setStu(String name,String snum,int stuNum)
{
this.name=name;
this.snum=snum;
this.stuNum=stuNum;
}
public void printStu(){
System.out.println("이름:"+name);
System.out.println("주민번호:"+snum);
System.out.println("학번:"+stuNum);
}
}
class Test04_inheritance
{
public static void main(String[] args)
{
Student stu=new Student();
stu.setStu("홍길동","123456-1234567",987654);
stu.printStu();
}
}
ex> 사각형, 삼각형 넓이 구하기.
{
private double x,y;
public void setXY(double x,double y)
{
this.x=x;this.y=y;
}
public double getX(){return x;}
public double getY(){return y;}
}
class MyRect extends MyShape
{
public double getArea()
{
double area=getX()*getY();
return area;
}
}
class MyTriangle extends MyShape
{
public double getArea()
{
return getX()*getY()/2;
}
}
class Test05_inheritance
{
public static void main(String[] args)
{
MyRect mr=new MyRect();
mr.setXY(10.0,20.0);
System.out.println("사각형넓이:"+mr.getArea());
MyTriangle mt=new MyTriangle();
mt.setXY(10.0,20.0);
System.out.println("삼각형넓이:"+mt.getArea());
}
}
- 상속에서의 생성자
ex>
{
private int a;
public MyParent(){
System.out.println("나는 부모생성자");
}
public MyParent(int a){
this.a=a;
}
public void printA(){
System.out.println("a:"+a);
}
}
class MyChild extends MyParent
{
private int b;
public MyChild(){
//super();
System.out.println("나는 자식생성자");
}
public MyChild(int a,int b){
//부모생성자 호출!!!
//위치는 가장 첫라인에 와야 함!
super(a);
this.b=b;
}
public void printB(){
System.out.println("b:"+b);
}
}
class Test06_inheritance{
public static void main(String[] args)
{
MyChild mc=new MyChild(1,2);
mc.printA();
mc.printB();
}
}
'JAVA' 카테고리의 다른 글
클래스간 형변환 / 다형성 (0) | 2014.09.12 |
---|---|
오버라이딩 / final의 용도 (0) | 2014.09.12 |
this (0) | 2014.09.12 |
객체배열 (0) | 2014.09.12 |
static (0) | 2014.09.12 |