抽象类(abstract class)

Posted PoeticalJustice

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抽象类(abstract class)相关的知识,希望对你有一定的参考价值。

 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 }

 

以上是关于抽象类(abstract class)的主要内容,如果未能解决你的问题,请参考以下文章

abstract class抽象类和interface接口区别

在谈PHP中的 抽象类(abstract class)和 接口(interface)

C++ 抽象类 (abstract class)

抽象类(abstract class)

abstract class与 interfacer

abstract class和interface的区别