多态的定义:指一个引用类型在不同情况下的多种状态(通过指向父类的指针来调用在不同子类中实现的方法);
抽象的定义:使用了关键词abstract声明的类叫作“抽象类”。如果一个类里包含了一个或多个抽象方法,类就必须指定成abstract(抽象)。“抽象方法”,只含有一个声明,没有方法主体,不能被实现,只能在子类中全部实现(和接口类似),且不能被实例化(可以由子类向上转型来实例化)。
抽象类中能不能有构造方法:能!
接口的定义:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)
接口中能不能有构造方法:不能!
A. 构造方法用于初始化成员变量,但是接口成员变量是常量,无需修改。
接口是一种规范,被调用时,主要关注的是里边的方法,而方法是不需要初始化的,
B. 类可以实现多个接口,若多个接口都有自己的构造器,则不好决定构造器链的调用次序
关于抽象类,接口可以有多态,如下解释:
多态有3个基本前提和3种形式:
一,前提:
A:
继承或者实现(有子类实现父类或者类实现接口)。
B:
有方法重写(无论是一般方法,还是抽象方法)。
C:
有父类或者父接口引用指向子类对象(核心,父 父 = new 子. 有时候是匿名类,不容易理解)。
二,3种形式(以下例子中方法重写省略):
1,子类继承父类(一般的类).
eg:
class Father{}
class Son extends Father {}
Fufather = new Son(); //父类的引用指向子类对象.
2抽象类多态:
abstractclass Father {}
class Son extends Father {}
Fu father = new Son();
3:接口多态:
public class Text1 {
public static void main(String []args){
Computer cp=new Computer();
Camera ca=new Camera();
Phone ph=new Phone();
cp.useUsb(ph);
}
}
//usb接口
interface Usb{
public void start();
public void stop();
}
//实现usb接口
class Camera implements Usb{
public void start() {}
public void stop() {}
}
class Phone implements Usb{
public void start() {}
public void stop() {}
}
class Computer{
public void useUsb(Usb usb){}
}