Java抽象类
1.抽象类的基本概念
a.很多具有相同特征的对象可以抽象为一个类;很多具有相同特征和行为的类可以抽象为一个抽象类
b.使用abstract关键字声明的类为抽象类
2.抽象类的规则
a.抽象类可以没有抽象方法,有抽象方法的类必须是抽象类
b.非抽象类继承抽象类必须实现所有抽象类的方法
c.抽象类可以有方法实现和属性
d.抽象类不能被实例化
e.抽象类不能被声明为final 区别:抽象类可以被子类继承 但是最终类不能被子类继承
f.抽象类可以有构造方法 会有显示但是没有实例化对象 原因是子类在实例化的时候调用了父类的构造方法 (调用构造方法不一定是实例化对象)
例子:
1 public class AbstractTest { 2 public static void main(String[] args) { 3 Goddess g = new Goddess(); 4 g.setName("彤彤"); 5 g.say(); 6 System.out.println("--------------------------"); 7 UglyWomen u = new UglyWomen(); 8 u.setName("小包子"); 9 u.say(); 10 } 11 } 12 13 //女人 14 //abstract 表示声明一个抽象类 15 abstract class Women{ 16 private String name; 17 public String getName() { 18 return name; 19 } 20 public void setName(String name) { 21 this.name = name; 22 } 23 24 public abstract void say(); //抽象类的方法不是具体的 (只有声明实现) 25 public abstract void method(); 26 } 27 28 class Goddess extends Women{ //一个类继承抽象类 必须全部实现抽象类中的方法 29 //实现父类的抽象方法 没有 abstract 修饰 30 public void say(){ 31 System.out.println("我是女神,我是"+getName()); 32 } 33 public void method(){} //空实现 34 } 35 36 class UglyWomen extends Women{ 37 //实现父类的抽象方法 没有 abstract 修饰 38 public void say(){ 39 System.out.println("我是丑女,我是"+getName()); 40 } 41 public void method(){} 42 }