package com.over3;//super에러 해결하기

public class PointTest {
	public static void main(String[] args){
		Point3D p3 = new Point3D(1,2,3);
		System.out.println(p3.getLocation());
	}
}

//Point(){}

class Point{
	int x;
	int y;
	
	String getLocation(){
		return "x :"+x+", y :"+y;
	}
}

class Point3D extends Point{
	int z;
	
	
	Point3D(int x, int y, int z){
		/*2.에러 해결방법
		부모 클래스에 default 생성자가 없고
		인자를 전달해야 하는 생성자만 있을경우
		명시적으로 super(인자)를 이용해서 부모클래스 생성자 호출
		super(x,y);*/
		this.x = x;
		this.y = y;
		this.z = z;
		
	}
	String getLocation(){//오버라이딩
		return "x : " +x+", y :"+y+"m z :" + z;
	}
}

x : 1, y :2m z :3


'Java > Overriding' 카테고리의 다른 글

예비  (0) 2012.04.11
super로 은닉된 슈퍼클래스의 멤버변수 접근하기  (0) 2012.04.11
Super 기본 정수  (0) 2012.04.11
메소드 오버라이딩 super 참조 변수  (0) 2012.04.11
메소드 오버라이딩  (0) 2012.04.11
package com.over2;//super로 은닉된 슈퍼클래스의 멤버변수 접근하기
class Point2D{
	protected int x=10; //은닉 변수
	protected int y=20; //혹은 쉐도우 변수
}

class Point3D extends Point2D{
	protected int x=40;	//슈퍼 클래스에 존재하는 멤버변수를
	protected int y=50; //서브 클래스에 다시 한번 정의함
	
	protected int z=30;
	public void print(){
		System.out.println(x+", "+y+", "+z);
	}
	
	public void print02(){
		System.out.println(super.x+", "+super.y+", "+z);
	}
}
public class SuperTest04 {
	public static void main(String[] args){
		Point3D pt = new Point3D();
		pt.print();
		pt.print02();
	}
}

40, 50, 30

10, 20, 30


'Java > Overriding' 카테고리의 다른 글

예비  (0) 2012.04.11
super 연습문제 (에러 찾기)  (0) 2012.04.11
Super 기본 정수  (0) 2012.04.11
메소드 오버라이딩 super 참조 변수  (0) 2012.04.11
메소드 오버라이딩  (0) 2012.04.11
package com.over2;//super 기본정보

class Parent2{
	int a=100;
	public Parent2(int a){
		this.a = a;
	}
}
class Child2 extends Parent2{
	int b=200;
	public Child2(){
		//부모 클래스가 default 생성자만 사용할 경우
		//super();//명시하지는 않지만 암묵적으로 
				   //부모 클래스의 default 생성자 호출
		
		
		//부모 클래스가 default 생성자를 사용하지 않고
		//인자가 전달되는 생성자를 명시했을때
		super(200);
	}
}

public class Exten03 {
	public static void main(String[] args){
		Child2 ch = new Child2();
		System.out.println(ch.a);
		System.out.println(ch.b);
	}
}

200

200


'Java > Overriding' 카테고리의 다른 글

예비  (0) 2012.04.11
super 연습문제 (에러 찾기)  (0) 2012.04.11
super로 은닉된 슈퍼클래스의 멤버변수 접근하기  (0) 2012.04.11
메소드 오버라이딩 super 참조 변수  (0) 2012.04.11
메소드 오버라이딩  (0) 2012.04.11
package com.over2;//메소드 오버라이딩 super참조 변수

class A{
	public void make(){
		System.out.println("부모 클래스");
	}
}

class B extends A{
	public B(){
		//super : 슈퍼클래스 (부모 클래스)를 가리키는
		//레퍼런스 변수
		super.make();
	}
	public void make(){//메소드 오버라이딩
		System.out.println("자식 클래스");
	}
}

public class Exten02 {
	public static void main (String[] args){
		B bp = new B();
		bp.make();
		//부모 값과 자식값 둘다 가져오게 된다 
	}
}

부모 클래스

자식 클래스


'Java > Overriding' 카테고리의 다른 글

예비  (0) 2012.04.11
super 연습문제 (에러 찾기)  (0) 2012.04.11
super로 은닉된 슈퍼클래스의 멤버변수 접근하기  (0) 2012.04.11
Super 기본 정수  (0) 2012.04.11
메소드 오버라이딩  (0) 2012.04.11
package com.over;//메서드 오버라이딩

class Parent{
	protected void make(){
		System.out.println("부모 클래스");
	}
}
class Child extends Parent{
	//메소드 오버라이딩(메소드 재정의) 메소드 오버라이딩 규칙 틀은 같으나 내용이 다름
	//부모 클래스 메소드의 확장 또는 재정의
	protected void make(){
		System.out.println("자식 클래스");
	}
}

public class Exten01 {
	public static void main(String[] args){
		Child ch = new Child();
		//목적은 재사용 이 아니라 확장, 재정의(리모델링)
		//메소드 오버라이딩으로 부모 클래스가 호출되지 않고 자식클래스로 바뀜
		ch.make();
	}
}

자식 클래스




package com.over2;//메서드 오버라이딩 기본2

class Parent{
	String msg = "Parent 클래스";
	public String getMsg(){
		return msg;
	}
}

class Child extends Parent{
	String str = "Child 클래스";
	//메소드 오버라이딩(재정의) -> 확장, 재정의(변형)
	public String getMsg(){
		return str;
	}
}


public class Exten01 {
	public static void main(String[] args){
		Child ch = new Child();
		System.out.println(ch.getMsg());
	}

}

Child 클래스





package com.over;//메서드 오버라이딩

class Parent{
	String msg = "겨울";
	protected void make(){
		System.out.println("부모 클래스");
	}
}
class Child extends Parent{
	//메소드 오버라이딩(메소드 재정의) 메소드 오버라이딩 규칙 틀은 같으나 내용이 다름
	//부모 클래스 메소드의 확장 또는 재정의

	//부모 클래스와 자식 클래스의 멤버변수명을 동일하게 
	//할경우는 자식클래스의 멤버변수가 호출됨
	//단지 변수명이 같아서 자식 클래스 쪽 멤버변수가
	//(호출되는 것이지 특별한 문법 사항이 있는것은 아님)
	String msg = "봄";
	//이건 오버라이딩 문법이 아님 메소드에만 있다
	protected void make(){
		System.out.println("자식 클래스");
	}

}

public class Exten01 {
	public static void main(String[] args){
		Child ch = new Child();
		//메소드 오버라이딩으로 부모 클래스가 호출되지 않고 자식클래스로 바뀜
		//목적은 재사용 이 아니라 확장, 재정의(리모델링)
		ch.make();
		System.out.println(ch.msg);
	}
}

자식 클래스


'Java > Overriding' 카테고리의 다른 글

예비  (0) 2012.04.11
super 연습문제 (에러 찾기)  (0) 2012.04.11
super로 은닉된 슈퍼클래스의 멤버변수 접근하기  (0) 2012.04.11
Super 기본 정수  (0) 2012.04.11
메소드 오버라이딩 super 참조 변수  (0) 2012.04.11

+ Recent posts