文章会有【原创】或者【转载】标示,部分来自Google Baidu的学习结果 {Java/PHP/Python/Ruby/Go}

Java 在学习三十二【原创】  


Java的抽象类:

1:抽象类

2:接口

3:内部类

1):成员内部类

2):静态内部类

3):局部内部类

4):匿名内部类


package coreJava;


public class Test7 {


public static void main(String[] args) {

// TODO Auto-generated method stub

C2 c2 = new C2();

c2.printInfo();

}


}


abstract class C1 {

public int age = 0;

public String name = null;

public abstract int getAge();

public abstract String getName();

public void printInfo() {

System.out.println("Age:" + age + " Name:" +  name);

}

}


class C2 extends C1 {


@Override

public int getAge() {

// TODO Auto-generated method stub

return 30;

}


@Override

public String getName() {

// TODO Auto-generated method stub

return "hhy";

}

public void printInfo() {

System.out.println("Age:" + this.getAge() + " Name:" + this.getName());

}

}


【注意】finalabstract不能一起使用;privateabstract也不能组合

函数 final修饰,方法不能重写;

final修饰,该类不能被继承;


接口 是一种准则,更多体现能干什么;

抽象类 是一种继承, is-a的关系;


【接口中所有的方法都市public abstract的,即使没有这样声明】

接口文件也会产生.class文件;接口不能实例化


package coreJava;


public class Test8 {


public static void main(String[] args) {

// TODO Auto-generated method stub

FlyTest ft = new FlyTest();

ft.fly();


PlanTest pt = new PlanTest();

pt.fly();

System.out.println("#########################");

//从语法角度看 只要会飞的

CanFly i = new FlyTest();

i.fly();

P1 p1 = new P1();

p1.toFly(ft);

p1.getOneCanFly().fly();

}


}


interface CanFly {

public abstract void fly();

}


class FlyTest implements CanFly {


@Override

public void fly() {

// TODO Auto-generated method stub

System.out.println("Bird Fly...");

}


}


class PlanTest implements CanFly {


@Override

public void fly() {

// TODO Auto-generated method stub

System.out.println("Plan Fly...");

}


}


class P1 {

// 实现了该接口的类的对象

public void toFly(CanFly f) {

f.fly();

}

public CanFly getOneCanFly() {

return new PlanTest();

}

}