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


'Java > Inheritance(상속)' 카테고리의 다른 글

상속 접근 지정자 살피기  (0) 2012.04.11
상속으로 핸드폰 만들기  (0) 2012.04.11
슈퍼 클래스와 서브 클래스 만드는 예제  (0) 2012.04.11
상속 기본  (0) 2012.04.11
package com.ext2;//상속 접근 지정자 살펴보기
class Point2D{
	private int x=10; //private 접근제한의 경우 
						//상속관계의 자식클래스 에서호출불가
	protected int y=20;
	int z = 30;
	public int getX(){//캡슐화로 가져다 쓰기
		return x;
	}
}

class Point3D extends Point2D{
	public void print(){
		//X가 접근 제한이 private 이기 때문에 호출불가
		//System.out.println(x +", "+y+ ", "+z);
		//사용하려면 private - > protected로 변경
		//메소드 생성후 은닉화 해서 캡슐화로 가져다 쓰기
		System.out.println(y+", "+z);
		System.out.println(getX() +", "+y+ ", "+z);
	}

}

public class SuperSub04 {
	public static void main (String[] args){
		Point3D p = new Point3D();
		p.print();
	}
}

20, 30

10, 20, 30






성격 살피기

package packTest.packOne;//접근 지정자의 성격 살피기-1

public class AccessTest {
	private int   a=10; //[1]private
	int 		  b=20;
	protected int c=30;
	public	  int d=40;
	
	public void print(){
		System.out.println("AccessTest의 print");
		System.out.println("a");
		System.out.println("b");
		System.out.println("c");
		System.out.println("d");
	}
}


package packTest.packTwo;//접근 지정자의 성격살피기-2
import packTest.packOne.AccessTest;

class SubOne extends AccessTest{
	void subPrn(){
		//System.out.println(a); //private 다른 클래스에서 호출불가
		//System.out.println(b); //default 다른 패키지에서 호출불가
		System.out.println(c); //protected 상속관계에선 어디서든 호출가능(패키지가 달라도)
		System.out.println(d); //public 접근 제한 없음
	}
}
//AccessTest랑 상속관계가 없는 클래스
public class SuperSubA {
	public static void main(String[] args){
		AccessTest at = new AccessTest();
		at.print();
		System.out.println("main");
		//System.out.println(at.a);//private 다른 클래스에서 호출불가
		//System.out.println(at.b);//default 다른 패키지에서 호출불가
		//System.out.println(at.c);//protected 상속관계가 아니고 다른 패키지에서 호출불가
		System.out.println(at.d);//[4.main] public - o
		//protected는 같은패키지에선 호출이 가능하지만 상속을 해주면 어느 클래스든 호출가능
	}
}

AccessTest의 print
a
b
c
d
main
40

'Java > Inheritance(상속)' 카테고리의 다른 글

예비  (0) 2012.04.11
상속으로 핸드폰 만들기  (0) 2012.04.11
슈퍼 클래스와 서브 클래스 만드는 예제  (0) 2012.04.11
상속 기본  (0) 2012.04.11
package com.ext3;//상속으로 핸드폰 만들기1

public class CellPhone {
	//휴대폰 기본 기능을 제공하는 클래스
	//private면은 가져다 쓸수 없지만 protected는 사용가능
	protected String model;
	protected String number;
	protected int chord;
	
	public String getModel(){
		return model;
	}
	public int getChord(){
		return chord;
	}
	public String getNumber(){
		return number;
	}

}


package com.ext3;

public class CellPhoneMain {
	public static void main(String[] args){
		DicaPhone dca = new DicaPhone("IN-7600","N235",60,"400만");
		MP3Phone mp = new MP3Phone("KN-600","S300",60,256);

		System.out.println("=============================");
		System.out.println("모델\t번호\t코드\t옵션(화소수/사이즈)");
		System.out.println("=============================");

		System.out.print(dca.getModel()+"\t");
		System.out.print(dca.getNumber()+"\t");
		System.out.print(dca.getChord()+"\t");
		System.out.print(dca.getPixel()+"\n");

		System.out.print(mp.getModel()+"\t");
		System.out.print(mp.getNumber()+"\t");
		System.out.print(mp.getChord()+"\t");
		System.out.print(mp.getSize()+"\n");
	}
}


package com.ext3;//디카폰
class DicaPhone extends CellPhone{
	private String pixel;
	public DicaPhone(String model,String number,
			int chord, String pixel){//cellphone에 있는것들 호출
		this.model = model;
		this.number = number;
		this.chord = chord;
		this.pixel = pixel;
		
		//this라 붙이면 CellPhone의  protected에 접근하게됨
	}//set메소드는 생성자를 통해서 구현
	public String getPixel(){
		return pixel;
	}
}


package com.ext3;	
public class MP3Phone extends CellPhone{
	//부모 클래스인 cellphone를 상속받아 기능을 확장한 MP3Phone
	private int size; //저장용량
	public MP3Phone(String model,String number,
			int chord, int size){
		this.model = model;
		this.number = number;
		this.chord = chord;
		this.size = size;
	}
	public int getSize() {
		return size;
	}
}


'Java > Inheritance(상속)' 카테고리의 다른 글

예비  (0) 2012.04.11
상속 접근 지정자 살피기  (0) 2012.04.11
슈퍼 클래스와 서브 클래스 만드는 예제  (0) 2012.04.11
상속 기본  (0) 2012.04.11
package com.ext2;//슈퍼 클래스와 서브 클래스 만드는 예제

class Parent{
	public void parentPrn(){
		System.out.println("슈퍼 클래스 메서드는 상속된다.");
	}
}

//Parent를 슈퍼클래스로 하는 서브 클래스 child정의
class Child extends Parent{
	public void childPrn(){
		System.out.println("서브 클래스 메서드는 슈퍼가 사용못한다.");
	}
}
public class SuperSub01 {
	public void main(String[] args){
		Child c = new Child();	//서브클래스로 객체를 생성
		//그 상위의 부모클래스를 메모리에 저장함parent랑 object둘다 메모리에 작성됨
		c.parentPrn();			//슈퍼 클래스에서 상속받은 메서드 호출
		c.childPrn();			//서브 클래스 자기 자신의 메서드 호출
		System.out.println("---------------------------->>");
		Parent p = new Parent();	//슈퍼 클래스로 객체 생성
		p.parentPrn();				//슈퍼 클래스 자기 자신의 메서드 호출
		//childPrn(); 				객체에 포함되어 있지 않기 때문에 호출불가
		//p.childPrn();				//서브 클래스 메서드는 가져다 사용못함
	}
}

부모클래스

자식 클래스


'Java > Inheritance(상속)' 카테고리의 다른 글

예비  (0) 2012.04.11
상속 접근 지정자 살피기  (0) 2012.04.11
상속으로 핸드폰 만들기  (0) 2012.04.11
상속 기본  (0) 2012.04.11
package com.ext;//상속 기본1

class Parent extends Object{//extends Object는 일반적으로  생략가능
	int a = 100;
}

class Child extends Parent{
	int b = 200;
}

public class Exten01 {
	public static void main(String[] args){
		Child c = new Child();
		System.out.println("a = "+c.a);
		System.out.println("b = "+c.b);
	}
}

a = 100

b = 200







package com.ext;//상속 기본2

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

class Child2 extends Parent2{
	public void fun(){
		System.out.println("자식 클래스");
	}
}
public class Exten02 {
	public static void main (String[] args){
		Child2 ch = new Child2();
		/*1.Child2의 객체 생성을 위해 Child2()를 호출
		2.Child2() -> 부모클래스의 default 생성자 호출
		3.부모 클래스가 먼저 메모리에 올라간후
		4.자식 클래스가 메모리에 올라감*/ 
		ch.make();
		ch.fun();
	}

}

부모클래스

자식 클래스


'Java > Inheritance(상속)' 카테고리의 다른 글

예비  (0) 2012.04.11
상속 접근 지정자 살피기  (0) 2012.04.11
상속으로 핸드폰 만들기  (0) 2012.04.11
슈퍼 클래스와 서브 클래스 만드는 예제  (0) 2012.04.11


'Java > Constructor (생성자)' 카테고리의 다른 글

static 기본3  (0) 2012.04.11
정적 메서드 정의하기  (0) 2012.04.11
static 기본  (0) 2012.04.11
정직 멤버변수와 인스턴스 멤버 변수의 차이점  (0) 2012.04.11
메소드 간단 예제  (0) 2012.04.11
public class StaticEx3 {
	
	public static void main(String[] args){
		StaticCount sc1 = new StaticCount();
		System.out.println("sc1의 c: "+ sc1.c + ", sc1의 count: " + StaticCount.count);
		StaticCount sc2 = new StaticCount();
		System.out.println("sc2의 c: "+ sc2.c + ", sc2의 count: " + StaticCount.count);
		StaticCount sc3 = new StaticCount();
		System.out.println("sc3의 c: "+ sc3.c + ", sc3의 count: " + StaticCount.count);
	}
}

sc1의 c: 1, sc1의 count: 1

sc2의 c: 1, sc2의 count: 2
sc3의 c: 1, sc3의 count: 3


'Java > Constructor (생성자)' 카테고리의 다른 글

예비  (0) 2012.04.11
정적 메서드 정의하기  (0) 2012.04.11
static 기본  (0) 2012.04.11
정직 멤버변수와 인스턴스 멤버 변수의 차이점  (0) 2012.04.11
메소드 간단 예제  (0) 2012.04.11
public class StaticCount {
	
	int c; //인스턴스 변수
	static int count; // 클래스(static)변수
						/*객체 생성과 무관
						호출에 의해 메모리에 올라가서 여러 객체에서 공유할 수 있음*/
	public StaticCount(){
		c++;
		count++;
	}
}

call 1
call 3
메인
call 2


class StaticTest001{//정적 메서드 정의하기
	private static int a=10;
	private int b=20;

	public static void SetA(int new_a){
		a = new_a;
	}
	public static int getA(){
		return a;
	}
}
public class StaticTest02 {
	public static void main(String[] args){
		//System.out.println(StaticTest.a);
		//a가 private으로 선언되어서 컴파일 에러 발생 (접근제한 때문에 호출불가)
		System.out.println(StaticTest001.getA());
		
		/*getA(),setA()가 static하기 때문에
		getA(),setA()만 호출할 경우 객체 생성하지 않고 호출가능
		StaticTest001 s1= new StaticTest001();
		StaticTest001 s2= new StaticTest001();*/

		StaticTest001.SetA(10000);
		int res1=StaticTest001.getA();
		
		System.out.println(res1);
		System.out.println(StaticTest001.getA());
	}
}

10

10000
10000


'Java > Constructor (생성자)' 카테고리의 다른 글

예비  (0) 2012.04.11
static 기본3  (0) 2012.04.11
static 기본  (0) 2012.04.11
정직 멤버변수와 인스턴스 멤버 변수의 차이점  (0) 2012.04.11
메소드 간단 예제  (0) 2012.04.11
public class StaticEx1 {
	
	int a; //인스턴스 변수
	static String s; //클래스(Static)변수 

	public static void main(String args){
		s = "자바의 꿈";
		//같은 클래스의 클래스 변수 호출시 클래스명 생략 ex)StaticEx1.s = 자바의꿈; 
		System.out.println("s : " + StaticEx1.s);

		//인스턴스 변수는 객체 생성 후 호출 가능
		//a = 1000;

		StaticEx1 st1 = new StaticEx1();
		st1.a = 1000;
	}
}
 
StaticTest.a->10
s1.a->10  s2.a->10
s1.b->10  s2.b->20
s1.a->100  s2.a->100

s1.b->20  s2.b->20


'Java > Constructor (생성자)' 카테고리의 다른 글

static 기본3  (0) 2012.04.11
정적 메서드 정의하기  (0) 2012.04.11
정직 멤버변수와 인스턴스 멤버 변수의 차이점  (0) 2012.04.11
메소드 간단 예제  (0) 2012.04.11
동물 만들기  (0) 2012.04.11
class StaticTest{//정직 멤버변수와 인스턴스 멤버 변수의 차이점
	static int a=10; //클래스(static)에 올라감
	int b=20; //heap에 올라감
}
public class StaticTest01 {
	public static void main(String[] args){
		System.out.println("StaticTest.a->"+StaticTest.a);
		StaticTest s1 = new StaticTest();
		StaticTest s2 = new StaticTest();
		
		System.out.println("s1.a->"+StaticTest.a+"\t s2.a->" + StaticTest.a);
		System.out.println("s1.b->"+StaticTest.a+"\t s2.b->" + s2.b);
		
		//정확한 호출 방법이 아님 StaticTest.a 로 호출해야됨
		
		StaticTest.a=100;
		System.out.print("s1.a->" + StaticTest.a);
		System.out.println("\t s2.a->"+StaticTest.a);
		
		s1.b=200;
		System.out.print("s1.b->" + s2.b);
		System.out.println("\t s2.b->"+s2.b);
	}

}

StaticTest.a->10

s1.a->10  s2.a->10
s1.b->10  s2.b->20
s1.a->100  s2.a->100
s1.b->20  s2.b->20


'Java > Constructor (생성자)' 카테고리의 다른 글

정적 메서드 정의하기  (0) 2012.04.11
static 기본  (0) 2012.04.11
메소드 간단 예제  (0) 2012.04.11
동물 만들기  (0) 2012.04.11
생성자 기본  (0) 2012.04.11
public class MethodTest004 {
	void prn(int ... num){ //int형 데이터를 출력하는 메서드의 정의
		for(int i=0; i<num.length; i++){//전달인자의 개수만큼 반복하면서
			System.out.print(num[i]+"\t"); //배열 형태로 출력한다.
		}
		System.out.println();
	}
	public static void main(String[] args){
		MethodTest004 mt = new MethodTest004();
	mt.prn(10,20,30); //개수에 상관없이 메서드를 호출할 수 있다.
	mt.prn(40,50);
	mt.prn(60);
	}
}

10 20 30

40 50
60


'Java > Constructor (생성자)' 카테고리의 다른 글

static 기본  (0) 2012.04.11
정직 멤버변수와 인스턴스 멤버 변수의 차이점  (0) 2012.04.11
동물 만들기  (0) 2012.04.11
생성자 기본  (0) 2012.04.11
생성자 내에 또다른 생성자를 호출  (0) 2012.04.11

동물 객체 만들기 Animal
멤버 필드 : 이름 나이 비행여부 boolean type -은닉화 
생성자
멤버 메소드(캡슐화) 

Animal Main
육상동물(포유류)
생성자 이용해서 데이터 셋팅

출력
이름
나이 (세)
비행여부 (불가능) 

조류 포함

class Ani{
	//멤버 필드 은닉화
	private String name;
	private int age;
	private boolean fly;
	//캡슐화
	public void setName(String n){
		name = n;
	}
	public void setAge(int a){
		age = a;
	}
	public void setFly(boolean f){
		fly = f;
	}
	//get name으로 값 가져오기
	public String getName(){
		return name; 
	}
	public int getAge(){
		return age; 
	}
	public boolean getFly(){
		return fly; 
	}
	//생성자
	public Ani(){}
	//멤버 메소드
	public void info(){
		System.out.println();
	}
}
//메인 메소드
public class AnimalMain{
	public static void main(String[] args){
		Ani a = new Ani();

		a.setName("하마");
		a.setAge(10);
		a.setFly(false);
		System.out.println("이름 : "+a.getName());
		System.out.println("나이 : "+a.getAge()+"세");
		if(a.getFly())
			System.out.println("비행 여부 : 가능");
		else
			System.out.println("비행 여부 : 불가능");
		System.out.println("==================");
		a.setName("참새");
		a.setAge(4);
		a.setFly(true);
		System.out.println("이름 : "+a.getName());
		System.out.println("나이 : "+a.getAge()+"세");
		if(a.getFly())
			System.out.println("비행 여부 : 가능");
		else
			System.out.println("비행 여부 : 불가능");

	}

}

이름 : 하마

나이 : 10세
비행 여부 : 불가능
==================
이름 : 참새
나이 : 4세
비행 여부 : 가능


'Java > Constructor (생성자)' 카테고리의 다른 글

정직 멤버변수와 인스턴스 멤버 변수의 차이점  (0) 2012.04.11
메소드 간단 예제  (0) 2012.04.11
생성자 기본  (0) 2012.04.11
생성자 내에 또다른 생성자를 호출  (0) 2012.04.11
this 레퍼런스  (0) 2012.04.11
public class ThisTest2 {
	
	int a;
	int b;
	
	public ThisTest2(int a,int b){
		//생성자 또는 메소드영역에서
		//멤버변수와 지역변수의 명칭이 같을때는
		//지역변수가 우선
		//this.a 는 위에있는 a이고 a는 int a이다
		//this는 멤버변수 호출이다
		this.a=a;
		this.b=b;
		//멤버변수 지역변수
		
		this.print();
	}
	public void print(){
		System.out.println(a + "," + b);
	}
	public static void main(String[] args){
		ThisTest2 t = new ThisTest2(4,5);

	}
}

4,5


'Java > Constructor (생성자)' 카테고리의 다른 글

메소드 간단 예제  (0) 2012.04.11
동물 만들기  (0) 2012.04.11
생성자 내에 또다른 생성자를 호출  (0) 2012.04.11
this 레퍼런스  (0) 2012.04.11
생성자 오버로딩  (0) 2012.04.11

+ Recent posts