'Java > Abstract Class' 카테고리의 다른 글
| 추상 메소드 (0) | 2012.04.11 |
|---|---|
| 추상클래스 기본 (0) | 2012.04.11 |
| 추상 클래스 예제 (0) | 2012.04.11 |
| 추상 메소드 (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();
}
}| 예비 (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();
}
}
| 예비 (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
| 예비 (0) | 2012.04.11 |
|---|---|
| 추상 메소드 (0) | 2012.04.11 |
| 추상클래스 기본 (0) | 2012.04.11 |
| 내부 클래스 호출에 대해서 (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
| 예비 (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
| 예비 (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
| 내부 클래스 호출에 대해서 (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();
}
}
| 내부 클래스 호출에 대해서 (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
| 내부 클래스 호출에 대해서 (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
| 내부 클래스 호출에 대해서 (0) | 2012.04.11 |
|---|---|
| 내부 클래스 static (0) | 2012.04.11 |
| 내부 클래스 지역변수 상수 호출 (0) | 2012.04.11 |
| 내부 클래스 (0) | 2012.04.11 |
| 클래스와 상수 (0) | 2012.04.11 |
| super 연습문제 (에러 찾기) (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.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
| 예비 (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
| 예비 (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
| 예비 (0) | 2012.04.11 |
|---|---|
| super 연습문제 (에러 찾기) (0) | 2012.04.11 |
| super로 은닉된 슈퍼클래스의 멤버변수 접근하기 (0) | 2012.04.11 |
| 메소드 오버라이딩 super 참조 변수 (0) | 2012.04.11 |
| 메소드 오버라이딩 (0) | 2012.04.11 |