OOP⑹

Posted 我可不是隔壁的老王

tags:

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

1.抽象类

所有由abstract关键字修饰的方法我们称之为  抽象方法!
抽象方法只能存在于 抽象类中!

 所有由abstract关键字修饰的类我们称之为  抽象类!
 
 抽象类的特点:
 01.由abstract关键字修饰
 02.类中可以有抽象方法也可以有普通方法
 03.子类必须重写父类的所有抽象方法,除非子类也是抽象类!
 04.抽象类不能实例化!但是可以有构造方法!
 
 
 final:
 
 01.如果一个属性值不希望被修改   在属性前加final
 02.如果一个方法不希望被重写   在方法上加 final
 03.如果一个类不希望被继承   在类上加final
技术分享
 1 /**
 2  * 所有动物的父类
 3  */
 4 public abstract class Animal {
 5 
 6     /**
 7      * 定义所有动物共有属性
 8      */
 9     private int age; // 年龄
10     private String name; // 姓名
11 
12     /**
13      *  所有动物公共的行为
14      *  01.如果不在子类中重写这个eat方法!那么所有的动物吃东西都执行这一个方法!
15      *      显然这种方式不可行! 怎么办?  子类重写eat()!
16      *  02.重写方法之后,得到了我们想要的结果! 每个动物吃饭的方法都不一样!
17      *      我们又发现了一个问题! 父类的这个eat()中的输出语句 有意义???
18      *      这个输入语句会得到执行吗??    只要我们重写 这个eat不可能执行!
19      *    那么我们就删除这句话!方法体就没了!{}也删除
20      *    报错了??为什么报错!
21      *      001.加方法体,刚删除,这种方式不可行!
22      *      002.在方法声明时,加入abstract关键字!  可行!
23      *      
24      *        所有由abstract关键字修饰的方法我们称之为  抽象方法!
25      *         抽象方法只能存在于 抽象类中!
26      *        
27      *     又报错了??
28      *      001.删除abstract关键字 ! 不可行!
29      *      002.在类上加入abstract关键字 
30      *        
31      *        所有由abstract关键字修饰的类我们称之为  抽象类!
32      *  
33      */
34     public abstract void eat();
35 
36     public int getAge() {
37         return age;
38     }
39 
40     public void setAge(int age) {
41         this.age = age;
42     }
43 
44     public String getName() {
45         return name;
46     }
47 
48     public void setName(String name) {
49         this.name = name;
50     }
51 
52     public Animal() {
53         super();
54     }
55 
56     public Animal(int age, String name) {
57         super();
58         this.age = age;
59         this.name = name;
60     }
61 
62     @Override
63     public String toString() {
64         return "Animal [age=" + age + ", name=" + name + "]";
65     }
66 
67 }
抽象方法和抽象类

技术分享
 1 /**
 2  * 因为cat不是抽象类,所以必须实现父类中所有的抽象方法
 3  */
 4 public class Cat extends Animal {
 5 
 6     @Override
 7     public void eat() {
 8         System.out.println("小猫咪在吃鱼!");
 9     }
10 
11 }
抽象方法和抽象类
技术分享
1 /**
2  *   因为dog是抽象类 所以不需要 重写animal的抽象方法,也可以重写
3  */
4 public abstract class Dog extends Animal {
5 
6 }
抽象方法和抽象类
技术分享
 1 public class AnimalTest {
 2 
 3     public static void main(String[] args) {
 4         // 创建小狗和小猫咪的实例
 5         // Dog dog = new Dog(); 抽象类 不允许实例化
 6         // 调用小狗吃东西的方法
 7         // dog.eat();
 8 
 9         Cat cat = new Cat();
10         // 调用小猫咪吃东西的方法
11         cat.eat();
12 
13     }
14 }
抽象方法和抽象类

 

 

以上是关于OOP⑹的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程

gcviewer怎么排查问题

使用从循环内的代码片段中提取的函数避免代码冗余/计算开销

OOP 设计以两种方式避免对象另一个对象

Python3+Selenium Web自动化测试案例分享⑹——unittest组织测试用例