'Java > Abstract Class' 카테고리의 다른 글

추상 메소드  (0) 2012.04.11
추상클래스 기본  (0) 2012.04.11
추상 클래스 예제  (0) 2012.04.11
package com.abs;

abstract class AbsEx1{
	int a = 100;
	public int getA(){
		return a;
	}
	//추상메소드
	abstract public String getStr();
	abstract public int getB();
}
abstract class AbsEx2 extends AbsEx1 {
	String str = "신세계";
	
	//AbsEx1의 추상 메서드 getStr()를 구현
	public String getStr(){
		return str;
	}
	
	//추상메소드
	abstract public int getC();
}

public class Exten02 extends AbsEx2{
	
	public int getB(){
		return 100;
	}
	public int getC(){
		return 200;
	}
	
	public static void main(String[] args){
		//추상클래스는 객체 생성 불가
		//AbsEx2 ab = new AbsEx2();
		
		Exten02 e = new Exten02();
	}
}


'Java > Abstract Class' 카테고리의 다른 글

예비  (0) 2012.04.11
추상클래스 기본  (0) 2012.04.11
추상 클래스 예제  (0) 2012.04.11
package com.abs;//추상클래스 기본

abstract class A{//추상 클래스 (미완성된 클래스)
				 //추상 클래스는 일반 클래스에 구현되어 사용(부모 역할)
	private int x;
	public void setX(int x){
		this.x = x;
	}
	
	//추상메소드
	public abstract void aaa();
	
}

class B extends A{
	//A클래스의 추상메소드 -> 일반 메소드로 구현함
	//재정의 문법을 적용
	public void aaa(){
		System.out.println("aaa() 메소드");
	}
}

public class Exten01 {
	public static void main(String[] args){
		/*추상 클래스는 객체 생성 불가
		A ap = new A();*/
		B bp = new B();
	}
}


'Java > Abstract Class' 카테고리의 다른 글

예비  (0) 2012.04.11
추상 메소드  (0) 2012.04.11
추상 클래스 예제  (0) 2012.04.11
package com.abs;//추상 클래스 기본틀
//추상 클래스
public abstract class Unit {
	protected String name;
	protected int energy;

	public int getEnergy(){
		return energy;
	}
	//추상 메서드
	abstract public void decEnergy(); // 에너지 소모
}





package com.abs;

public class Zerg extends Unit{
boolean fly;
	
	public Zerg(String name, boolean fly){
		this.name = name;
		this.energy = 100;
		this.fly = fly;
	}
	//unit의 추상메서드 구현
	public void decEnergy(){
		energy -= 6;
	}
}





package com.abs;

public class Protoss extends Unit{
	boolean fly;
	
	public Protoss(String name, boolean fly){
		this.name = name;
		this.energy = 100;
		this.fly = fly;
	}
	//unit의 추상메서드 구현
	public void decEnergy(){
		energy--;
	}

}





package com.abs;

public class Terran extends Unit{
boolean fly;
	
	public Terran(String name, boolean fly){
		this.name = name;
		this.energy = 100;
		this.fly = fly;
	}
	//unit의 추상메서드 구현
	public void decEnergy(){
		energy -= 3;
	}
}





package com.abs;

public class UnitTest {
	public static void main(String[] args){
		Zerg z1 = new Zerg("승리",false);
		z1.decEnergy();
		System.out.println("z1의 energe : "+z1.getEnergy());
		
		Protoss p1 = new Protoss("행복",true);
		p1.decEnergy();
		System.out.println("p1의 energe : "+p1.getEnergy());
		
		Terran t1 = new Terran("파도",false);
		t1.decEnergy();
		System.out.println("t1의 energe : "+t1.getEnergy());
	}

}

z1의 energe : 94

p1의 energe : 99
t1의 energe : 97


'Java > Abstract Class' 카테고리의 다른 글

예비  (0) 2012.04.11
추상 메소드  (0) 2012.04.11
추상클래스 기본  (0) 2012.04.11


'Java > Modifier(제어자)' 카테고리의 다른 글

내부 클래스 호출에 대해서  (0) 2012.04.11
내부 클래스 static  (0) 2012.04.11
내부 클래스 지역변수 상수 호출  (0) 2012.04.11
내부 클래스  (0) 2012.04.11
클래스와 상수  (0) 2012.04.11
package com.inner2;//내부 클래스 원하는 변수 출력하기

class Outer2{
	int a = 100;
	
	//멤버 내부 클래스
	class Inner2{
		int a = 200;
		public void method1(){
			int a = 300;
			System.out.println("a = "+a);
			System.out.println("this.a = "+Inner2.this.a);
			System.out.println("this.a = "+this.a);
			System.out.println("Outer2.this.a = "+ Outer2.this.a);
			//위치가 명확하지 않으면 위치를 써놓고 this를 쓰는것이 좋음
		}
	}
}

public class InnerTest2 {
	public static void main (String[] args){
		Outer2.Inner2 oi = new Outer2().new Inner2();
		oi.method1();
	}
}

a = 300

this.a = 200
this.a = 200
Outer2.this.a = 100


'Java > Modifier(제어자)' 카테고리의 다른 글

예비  (0) 2012.04.11
내부 클래스 static  (0) 2012.04.11
내부 클래스 지역변수 상수 호출  (0) 2012.04.11
내부 클래스  (0) 2012.04.11
클래스와 상수  (0) 2012.04.11
package com.inner4;//내부 클래스 static 알아보기

public class InnerEx {
	//내부 클래스가 static 변수를 갖고 있으면
	//클래스를 static으로 지정해야 함
	static class StaticInner{
		int iv = 200;
		static int cv = 300;
	}
	public static void main(String[] args){
		InnerEx.StaticInner i = new InnerEx.StaticInner();
		System.out.println(i.iv);
		System.out.println(InnerEx.StaticInner.cv);
	}
}

200

300


'Java > Modifier(제어자)' 카테고리의 다른 글

예비  (0) 2012.04.11
내부 클래스 호출에 대해서  (0) 2012.04.11
내부 클래스 지역변수 상수 호출  (0) 2012.04.11
내부 클래스  (0) 2012.04.11
클래스와 상수  (0) 2012.04.11
package com.inner3;//내부 클래스 지역변수 상수 호출

public class InnerTest {
	int a = 100;
	public void innerMethod(){
		int localVar = 500; //지역변수
		final int num =100; //상수
		class Inner{
			int b = 200;
			public void getDate(){
				//InnerTest의 멤버변수는 호출 가능
				System.out.println("a = "+a);
				//Inner의 멤버변수는 당연히 호출가능
				System.out.println("b = "+b);
				/*내부 클래스가 포함된 메소드의 지역변수 호출불가
				System.out.println("lovalVar = "+localVar);*/
				//상수는 호출 가능
				System.out.println("num = "+num);
			}
		}
		//메모리에 올리기
		Inner i = new Inner();
		i.getDate();
	}
	public static void main(String[] args){
		InnerTest i = new InnerTest();
		i.innerMethod();
		
	}
}

a = 100

b = 200
num = 100


'Java > Modifier(제어자)' 카테고리의 다른 글

내부 클래스 호출에 대해서  (0) 2012.04.11
내부 클래스 static  (0) 2012.04.11
내부 클래스  (0) 2012.04.11
클래스와 상수  (0) 2012.04.11
상수 final  (0) 2012.04.11
package com.inner;//내부 클래스

class Outer{
	int a =100;
	//멤버 내부 클래스
	class Inner{
		int b = 200;
	}
}

public class InnerTest {
	public static void main(String[] args){
		Outer ot = new Outer();
		System.out.println("ot = "+ot);
		System.out.println(ot.a);
		
		//내부 클래스 객체 생성
		Outer.Inner oi = ot.new Inner();
		System.out.println("oi = "+oi);
		System.out.println(oi.b);
	}
}





class Outer{
	//멤버 변수
	int a = 100;
	//멤버 내부 클래스
	class Inner{
		int b = 200;
		public void make(){
			//멤버 내부 클래스는 내부 클래스를 포함하는 \
			//클래스(Outer)의 멤버변수 호출 가능
			System.out.println("a = "+a);
			System.out.println("B = "+b);
		}
	}
}

public class InnerTest {
	public static void main(String[] args){
		/*Outer ot = new Outer();
		Outer.Inner oi = ot.new Inner();
		oi.make();*/	
		
		Outer.Inner oi = new Outer().new Inner();
		oi.make();
	}
}





package com.inner3;

public class LocalInner {
	public void innerTest(){
		//로컬 내부 클래스
		class Inner{
			public void getDate(){
				System.out.println("Local 내부 클래스 호출!!");
			}
		}
		Inner i = new Inner();
		i.getDate();
	}//innerTest()끝
	public static void main(String[] args){
		LocalInner outer = new LocalInner();
		outer.innerTest();
	}
}


'Java > Modifier(제어자)' 카테고리의 다른 글

내부 클래스 호출에 대해서  (0) 2012.04.11
내부 클래스 static  (0) 2012.04.11
내부 클래스 지역변수 상수 호출  (0) 2012.04.11
클래스와 상수  (0) 2012.04.11
상수 final  (0) 2012.04.11

package com.finalex;

class Me{
	int var = 100;
	//메소드에 final을 지정하면 해당 메소드는 상속되지만
	//자식 클래스에서 재정의 되지 않음
	public final void setVar(int var){
		this.var = var;
	}
}


public class MeEx extends Me{
	/*부모 클래스의 setVar가 final 이기 때문에 재정의 불가능
	public void setVar(int var){
		System.out.println(var);
	}*/
	
	public static void main(String[] args){
		MeEx m = new MeEx();
		m.setVar(300);
		System.out.println(m.var);
	}
}

300


'Java > Modifier(제어자)' 카테고리의 다른 글

내부 클래스 호출에 대해서  (0) 2012.04.11
내부 클래스 static  (0) 2012.04.11
내부 클래스 지역변수 상수 호출  (0) 2012.04.11
내부 클래스  (0) 2012.04.11
상수 final  (0) 2012.04.11
package com.finalex;

class FinalMember{
	final int A = 10;//상수 (대문자가 좋음)(초기화)
	public void setA(int a){
		//상수는 프로그램에서 처음 사용할때 초기화는 가능하지만
		//한번 초기화한 후 변경 불가능
		//this.A = a;
	}
}

public class FinalTest01 {
	public static void main(String[] args){
		FinalMember ft = new FinalMember();
		ft.setA(100);
		System.out.println(ft.A);
	}

}

10


'Java > Modifier(제어자)' 카테고리의 다른 글

내부 클래스 호출에 대해서  (0) 2012.04.11
내부 클래스 static  (0) 2012.04.11
내부 클래스 지역변수 상수 호출  (0) 2012.04.11
내부 클래스  (0) 2012.04.11
클래스와 상수  (0) 2012.04.11


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

+ Recent posts