1. 抽象类可以继承普通类,但不可以继承接口。 (public abstract class 抽象类 extends 普通类 { })
2. 接口可以继承多接口,但不可以继承抽象类。 (public abstract class 接口1 extends 接口2,接口3 ,接口4 { })
3. 抽象类可以实现单接口。(public abstract class 抽象类 implements 接口1 { })
4. 接口类不可以实现抽象类。
===========================================================================
抽象类(abstract class)
抽象类是一种特殊的类,与类的区别只是抽象类不能被实例化,既然不能被实例化(Person p = new Person();),所以抽象类必须被继承,才能被使用。
因为抽象类是特殊的类,本质上还是类,所以抽象类拥有类所具有的一些特征:属性、方法、不带方法体的方法(抽象方法);
抽象类也可以和类一样,实现接口、多接口等,但抽象类区别于类,不需要实现接口下的所有方法。
用途:例如需要一个类,但是不需要有具体执行的代码,那么就可以把这个类写成抽象类。
关键字:abstract
如下,抽象类的写法,这里代码只是给解释一下抽象类的特征
/** 抽象类 */
public abstract class Persion {
public String name;
public void eating() {
System.out.println("Persion --- eating");
}
public abstract void running();
}
如果想使用抽象类,那就需要子类继承它
抽象类(Persion)被子类(Man)继承后,就会强迫子类重写抽象类中定义的抽象方法,除非子类也是抽象类。
在子类的方法中自定义可执行代码
/** 子类 */
public class Man extends Persion{
public void running() {
System.out.println("Man --- running");
}
}
如果子类(Man)继承抽象类(Persion)后,那么就可以在测试类里通过抽象类Persion类型去引用子类的实例
/** 测试类 */
public class Test {
public static void main(String[] args) {
Persion p = new Man();// 普通类继承抽象类
p.running();
}
}
如果子类也是抽象类,那么可以不用重写父类的方法
/** 子类 */
public abstract class Man extends Persion{
// 抽象类继承抽象类,不需要重写父类方法
}
接口(interface)
接口不是类,它由关键字interface声明,既然不是类,那接口就需要有自己的书写规范,也可以说“接口就是个规范”。
深层次的问题:为啥要用接口,除了多态的理论,其它的我这里暂时无法解释,因为我还接触不到。。。
接口比抽象类更抽象,接口里不能有变量,但可以有全局静态常量 public static final
public static String str = "ABC"; // 静态变量
public static final String str = "ABC"; // 静态常量
接口可以有方法,但所有的方法只能是“类要实现的方法”,而且是“不带方法体的方法”,也就是抽象方法。
接口中的所有方法是抽象方法,默认类型:public abstract
关键字:interface
如下,写一个汽车接口,
public interface Car {
public String color();// 默认格式:public abstract String color();
}
接口可以继承接口、多接口,从而实现接口之间的多继承。它区别于类,因为类只能继承一个类
public interface Interface03 extends Interface01,Interface02{
....
}
这里有必要提几句,既然是做编程,一定要规范必要的关键字的用法,及读法
abstract 是抽象的关键字,例如修饰一个类、一个方法
public abstract class Persion { }
public abstract String color();
extends 是继承的关键字,例如子类Man继承父类Persion:
public class Man extends Persion { }
interface 是接口的关键字,例如接口Car :
public interface Car { }
implements 是接口实现的关键字,例如Audi类实现Car的接口(也可以说是Audi类是接口Car的实现类) :
public interface Audi implements Car { }
接口不能实现接口
public interface Interface03 implements Interface01,Interface02 { // 错误写法
}
----------------------------------------------------------------
以上均为个人分析的观点,有问题留言