一、抽象类的特点
1、abstract修饰的类叫做抽象类,abstract修饰的方法叫做抽象方法。
2、abstract修饰的抽象方法必须在子类里面并实现,前提是子类不是抽象类。
3、抽象类一定是父类。
4、只有抽象类当中才有抽象方法,普通类当中不能有抽象方法。
5、抽象类当中不一定非要写抽象方法,也可以写普通方法。
6、抽象类不能被实例化(不能被创建对象),只能使用多态。
7、final和abstract不能同时使用,final修饰的类不能被继承,final修饰的方法不能被重写。
8、abstract修饰的方法不能被static修饰,static修饰的方法属于类。
9、抽象方法不能使用private修饰符进行修饰。
10、抽象类有构造器,但是抽象类的构造器不能创建对象,抽象类目的是为了完成一些必要性初始化操作。
二、代码示例
未使用抽象方法
public class Animal{
public void run(){
System.out.println("所有动物都会跑");
}
public void fly(){
System.out.println("飞起来");
}
}
public class Cat extends Animal{
public void run(){
System.out.println("所有的猫都会跑");
}
}
public class Dog extends Animal{
public void run(){
System.out.println("所有的狗都会跑");
}
}
public class Test{
public static void main(String[] args){
Animal a = new Dog();
a.run();//输出 所有的狗都会跑
}
}
使用抽象方法,添加了构造器
public abstract class Animal{
private String name;
public Animal(String name){
this.name=name;
}
public String getName(){
return name;
}
public abstract void run();
public void fly(){
System.out.println("飞起来");
}
}
public class Cat extends Animal{
public Cat(String name){
super(name);//使用super调用父类构造器传初始值
}
public void run(){
System.out.println("所有的猫都会跑");
}
}
public class Dog extends Animal{
public Dog(String name){
super(name);
}
public void run(){
System.out.println("所有的狗都会跑");
}
}
public class Test{
public static void main(String[] args){
Animal a = new Dog("aa");
a.run();//输出 所有的狗都会跑
System.out.println(a.getName());//aa
}
}
上一篇
继承(extends)