1 package com.bjsxt.oop.abstractClass; 2 //抽象类 3 public abstract class Animal { 4 //因为父类的方法总是被重写 那就没写的必要了 但是有声明的必要 声明成抽象方法 包含了 抽象方法的类 是抽象类 必须加上关键字 abstrat 5 /* 6 public void run(){ 7 } 8 */ 9 //下面是抽象方法 只是声明没有实现 所以也就没有{} 10 public abstract void run(); 11 //普通方法 12 public void breath(){ 13 System.out.println("呼吸"); 14 } 15 16 } 17 //如果一个类继承抽象类 那必须 1.实现抽象类 或者 2.你定义一个抽象类 去继承另外一个抽象类 18 /*The type Cat must implement the inherited abstract method Animal.run() 19 class Cat extends Animal{ 20 } 21 */ 22 // 1.实现抽象类,重写了抽类型的方法 完成了具体实现 23 class Cat extends Animal{ 24 //@override是注解 含义 必须重写 不能改名 25 @Override 26 public void run() { 27 System.out.println("猫步跑"); 28 } 29 } 30 // 2.你定义一个抽象类 去继承另外一个抽象类 31 //abstract class Cat extends Animal{ 32 //} 33 class Dog extends Animal{ 34 @Override 35 public void run() { 36 System.out.println("狗跑"); 37 } 38 } 39 40 41 /** 42 * 总结 43 * 为什么需要需要抽象类?如何定义抽象类? 44 * 抽象类是为所有的子类提供了一个通用模板,子类可以通过这个模板进行扩展 45 * 通过抽象类,可以避免子类设计的随意性,通过抽象类,我们就可以找到很严格的限制子类的设计,使子类之间更加通用、。 46 * 47 * 要点 48 * 有抽象方法的类智能定义成抽象类 49 * 抽象类不能实例化,既不能用new来实例化抽象类 50 * 抽象类可以包含属性,方法,构造方法。但是构造方法不能用来new实例,只能用来被子类调用。 51 * 抽象类只能用来继承 52 * 抽象方法必须被子类实现。 53 */
1 package com.bjsxt.oop.abstractClass; 2 3 public class Test { 4 5 /** 6 * @param args 7 */ 8 public static void main(String[] args) { 9 10 // Animal a = new Animal(); 11 // 调用了抽象类的构造方法 即使他存在 12 // * 要点 13 // * 有抽象方法的类智能定义成抽象类 14 // * 抽象类不能实例化,既不能用new来实例化抽象类 15 // * 抽象类可以包含属性,方法,构造方法。但是构造方法不能用来new实例,只能用来被子类调用。 16 // * 抽象类只能用来继承 17 // * 抽象方法必须被子类实现。 18 } 19 20 }