//AA라는 사람이 b,c라는 사람에게 우리가 aaa메소드를 만들어서 제품을 구성하자.
class A{
public void aaa() {
System.out.println("AAA");
}
}
class B{
public void Aaa() {
}
}
class C {
public void aAa() {
}
}
public class Exam14 {
public static void main(String[] ar) {
A ap=new A();
ap.aaa();
B bp=new B();
bp.Aaa();
C cp=new C();
cp.aAa();
}
}
결과:
aaa클래스
abstract class YY{
public abstract void aaa();//추상메소드를 만들면 반드시 추상이라고 정의를 해야함.
//메소드의 내용부가 없어야됨.
//public void aaa(){내용부}
//추상클래스를 가지고 객체생성을 할 수 없음.
}
class BB extends YY{//위의것 AA클래스의 똑같은 메소드로써 이것은..오버라이딩해야됨
public void aaa() {
System.out.println("BBB");
}
}
class CC extends YY{//위의것 AA클래스의 똑같은 메소드로써 이것은..오버라이딩해야됨
public void aaa() {
System.out.println("CCC");
}
}
public class Exam01 {
public static void main(String[] ar) {
// YY yp=new YY();//추상클래스이기때문에 만들수없음.
BB bp=new BB();
CC cp=new CC();
YY yp=new BB();//부모클래스가(이름) 자식을 관리하는것에 대한의미임.객체생성이 가능함.BBB
YY yp1=new CC();//부모클래스가(이름) 자식을 관리하는것에 대한의미임.객체생성이 가능함.CCC
yp.aaa();//부모이름으로 자식을 제어하는 메소드인경우는 하위의 메소드를 선택함.이것이 다형성.
yp1.aaa();
}
}
결과:
BBB
CCC
interface AAA{//다중상속을 위한 최적의 멤버필드를 가지게 됨 by interface
//interface클래스의 정의된 멤버필드는 모두 static final형태로 선언됨.
public static int x=100;
public static final int w=0;
public final int y=200;
public int z=300;
// void ddd() {}
public static class Inner{}
public abstract void aaa();
public void bbb();
void ccc();
}
public class Exam02 {
public static void main(String[] ar) {
System.out.println("x="+AAA.x);//모두static으로 선언되었기때문임.
System.out.println("w="+AAA.w);
System.out.println("y="+AAA.y);
System.out.println("z="+AAA.z);
// AAA.w=10;//final형태로 정의되어져있기때문에 변경이불가.
// AAA.x=1000;
// AAA.y=40;
// AAA.z=55;
}
}
결과:
x=100
w=0
y=200
z=300
public interface Exam04 {
int x=100;
void disp();
}
public class Exam05 implements Exam04 {
public void disp() {
System.out.println("x="+x);
}
public static void main(String[] ar) {
Exam04 ap=new Exam05();
ap.disp();
}
}
결과:
x=100
class Point {
private int x,y;
public Point(int x , int y) {
this.x = x;
this.y = y;
}
}
public class Exam06 {
public static void print(Object p) {
System.out.println(p.getClass().getName());
System.out.println(p.hashCode());
System.out.println(p.toString());
System.out.println(p);
}
public static void main(String[] ar) {
Point p = new Point(2,3);
print(p);
}
}
결과:
Point
1101288798
Point@41a4555e
Point@41a4555e