一.抽象类和接口的相同和不同
相同:方法中无实体
不同:抽象类是一个类中的所有对象的共同的行为(通用 共性的功能),而接口是一个类中所有对象中 的特殊的行为。(特殊 个别的功能)
二:抽象类:抽象类是类与类之间,而类是对象与对象之间。
其实抽象类跟普通类很相似,只是多了个抽象方法。故抽象类中有具体方法和抽象方法。
1.格式
abstract class 类名{
abstract void 方法名();
}
2.抽象类中的变量不能是abstract,因为abstract不能与final共同存在。
可以有static private protect ,final,transient,volatile类型
例如:
abstract classC{
private int a;
static int a1;
public int a2;
final int a3=100;
transient int a4;
volatile int a5;
}
3.调用:可用多态方式调用,而抽象方法有两种实现方式:
&使用子类去继承它的方法,,实现它。
&使用子类的子类去实现它。
4.抽象类为什么不能创建对象?
答:因为抽象类中有抽象方法,没有实体。当创建一个对象事,要能够去实现它的方法,而抽象方法不能实现,故抽象类不能创建对象
三接口
1.接口一定是抽像类,但抽象类不一定是接口,也就是说接口是纯正的抽象类
2.格式:接口类名通常以I开头。
interface I类名{
(abstract可写可不写,因为接口是抽象类,故内部存在。尽量不写)void 方法名; //抽象方法
}
3.接口的成员属性只能是常量,可以有public static final 类型
例如:interfaceIA{
static int a1=100;
public int a2=100;
final int a3=100;
public voidf1();
}
四多态
举个例子吧!
package 书籍练习;
public classa1 {
private static final Animal Dog =null;
public static void main(String[] args) {
Animala=newDog();
//虽然它调用时用的是Dog,但当a的类型是Animal,故只可以用Animal中的所有方法
a.showInfo();
//若想使用dog中的独有的方法,可以强转
Doga1=(Dog)a;
a1.bit();
Dogd1=null;
Catd2=null;
//也可以用这个方法,instanceof是测试左边的对象是否是属于右边的类
if(ainstanceof Dog){
d1=(Dog)a;
}
}
}
abstract classAnimal{
//动物需要吃东西eat()
public abstract void eat();
//动物需要发出叫声cry()
public abstract void cry();
public void showInfo(){
System.out.println("这是一个动物");
}
}
class Cat extendsAnimal{
public void eat(){}
//动物需要发出叫声cry()
public void cry(){}
}
四注意:
继承 抽象 接口 ,权限都是越变力越大的。