抽象类
package Abstract;
public abstract class AbstractClass {
//抽象方法只作声明,而不包含实现,可以看成是没有实现体的虚方法
public abstract void abstractMethod();
//抽象方法不能private static final修饰
//private abstract void eat();
//抽象类可以但不是必须有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把这个类声明为抽象类
//抽象类可以有普通方法也可以有static方法
private static void normalMethod(){
}
//可以普通属性和常量
private String s;
private static int i;
private static final int p=100;
//可以有构造方法
public AbstractClass(){
}
//可以有静态代码块
static{
}
{
}
//普通类该有的功能抽象类都有唯一区别就是不能实例化,抽象方法。
}
------------------------------------------------------------------------------------------------------------------------------------------------
package Abstract;
public interface InterfaceClass {
public abstract void iterfaceMethod();
}
------------------------------------------------------------------------------------------------------------------------------------------------
package Abstract;
//抽象派生类可以覆盖基类的抽象方法,也可以不覆盖。如果不覆盖,则其具体派生类必须覆盖它们
public abstract class ChildAbstractClass extends AbstractClass implements InterfaceClass{
}
------------------------------------------------------------------------------------------------------------------------------------------------
package Abstract;
public class Child extends ChildAbstractClass {
//具体派生类必须覆盖基类的抽象方法
@Override
public void abstractMethod() {
}
@Override
public void iterfaceMethod() {
}
}
------------------------------------------------------------------------------------------------------------------------------------------------
package Abstract;
public class Test {
public static void main(String[] args) {
//抽象类不能被实例化
//AbstractClass p= new AbstractClass();
}
}
接口
package Interface;
public interface IterfaceClass {
//接口只能包含方法声明(也可以不写abstract编译的时候默认加上)
public abstract void abstractMethod();
//抽象方法不能private static final修饰
//private abstract void eat();
//可以有普通方法和静态方法
public static void normalMethod(){
}
//可以有普通属性和静态属性和常量但是必须public其它都不可以,必须初始化
public String s="";
public static int i=0;
public static final int p=100;
//不可以有构造方法
//public AbstractClass(){
//}
//不可以有静态代码块
//static{
//}
//{
//}
}
------------------------------------------------------------------------------------------------------------------------------------------------
package Interface;
public class Child implements IterfaceClass {
@Override
public void abstractMethod() {
}
}
------------------------------------------------------------------------------------------------------------------------------------------------
package Interface;
public class Test {
public static void main(String[] args) {
//接口不能被实例化
//IterfaceClass p=new IterfaceClass();
System.out.println(""+ IterfaceClass.p);
IterfaceClass p=new Child();
}
}
网友评论