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 }

抽象方法和抽象类

 
时间: 2024-11-06 23:58:27

OOP⑹的相关文章

在java中,OOA是什么?OOD是什么?OOP是什么?

OOA Object-Oriented Analysis:面向对象分析方法 是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题.OOA与结构化分析有较大的区别.OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析. OOA(面向对象的分析)模型由5个层次(主题层.对象类层.结构层.属性层和服务层)和5个活动(标识对象类.标识结构.定义主题.定义属性和定义服务)组成.在这种方法中定义了两种对象类之间的结构,

OOP的三大特性------封装、继承、多态

封装 1.<1>类背后隐藏的思想是数据抽象和封装 <2>信息隐藏,隐藏对象的实现细节,不让外部直接访问到 将数据成员和成员函数一起包装到一个单元里,单元以类的形式实现 <3>将数据成员和成员函数包装进类中,加上具体实现的隐藏, 共同被称作封装,其结果是一个同时带有特征(比如车的价格 车牌号)和 行为(比如开车 停车)的数据类型 <4>定义类,定义其数据成员.成员函数的过程称为封装类 2.信息隐藏是OOP最重要的功能之一,也是使用访问修饰符的原因 信息隐藏的原

玩转JavaScript OOP[2]&mdash;&mdash;类的实现

概述 当我们在谈论面向对象编程时,我们在谈论什么?我们首先谈论的是一些概念:对象.类.封装.继承.多态.对象和类是面向对象的基础,封装.继承和多态是面向对象编程的三大特性. JavaScript提供了对象却缺乏类,它不能像C#一样能显式地定义一个类.但是JavaScript的函数功能非常灵活,其中之一就是构造函数,结合构造函数和原型对象可以实现"类". 对象和类的概念 对象 "对象"是面向对象编程中非常重要的一个概念,一个对象是一个"东西"(某个

C#语言-04.OOP基础

a. OOP:面对对象思想 i. 类:是一种功能强大的数据类型,而且是面向对象的基础 1. 语法:访问修饰符 class 类名{ //类的主体 } 2. 成员变量:不以"函数"形式体现 a. 常量:代表与类相关的常量值 b. 变量:类中的变量 c. 事件:由类产生的通知,用于说明发生了什么事件 d. 类型:属于类的局部类型 3. 成员函数:以"函数"形式体现 a. 方法:完成类中各种计算或功能的操作,不能和类同名.不能和类中其他成员同名 b. 属性:定义类的值,并对

C++ Primer 笔记——OOP

1.基类通常都应该定义一个虚析构函数,即使该函数不执行任何实际操作也是如此. 2.任何构造函数之外的非静态函数都可以是虚函数,关键字virtual只能出现在类内部的声明语句之前而不能用于类外部的函数定义.如果基类把一个函数声明成虚函数,则该函数在派生类中隐式地也是虚函数.成员函数如果没有被声明成虚函数,则其解析过程发生在编译时而非运行时. 3.继承的访问说明符的作用是控制派生类从基类继承而来的成员是否对派生类用户可见. 4.在一个对象中,继承自基类的部分和派生类自定义的部分不一定是连续存储的.C

PHP OOP 面向对象的特性

一. OOP 的封装 隐藏对象的字段和实现细节,仅对外公开接口,控制在程序中字段的读和修改的访问级 别:将抽象得到的数据和行为(或功能)相结合,形成 一个有机的整体,也就是将数据与 操作数据的源代码进行有机的结合,形成"类",其中数据和函数都是类的成员. 字段的作用域 1.public 公共的 (类外可以访问) 2.private 私有的 (类内可以访问) 3.protected 受保护的 (类内和子类可以访问,类外不可访问) 创建使用了私有的字段,这样外部就无法访问了 class C

js oop中的三种继承方法

JS OOP 中的三种继承方法: 很多读者关于js opp的继承比较模糊,本文总结了oop中的三种继承方法,以助于读者进行区分. <继承使用一个子类继承另一个父类,子类可以自动拥有父类的属性和方法.(继承的两方,发生在两个类之间)> 一.通过object实现继承 1:定义父类 function Parent(){} 2:定义子类 funtion Son(){} 3:通过原型给Object对象添加一个扩展方法. Object.prototype.customExtend = function(p

面向对象 OOP

[面向对象编程OOP] 1 语言的分类 面向机器 :汇编语言 面向过程 :c语言 面向对象 :c++ Java PHP等 2 面向过程与面向对象 面向过程:专注于如何去解决一个问题的过程,编程特点是一个函数去实现过程操作,没有类与对象的概念 面向对象:专注于有哪一个对象实体去解决这个问题,编程特点是:出现一个个的类,由类去生成对象 [面向对象的三大特征] 继承 封装 多态 类与对象的关系 1类 : 一群有相同特征(属性)和行为(方法)的集合 人类 属性:身高 ,年龄.体重, 方法:吃饭 睡觉 敲

跟着百度学PHP[4]OOP面对对象编程-7-OOP的一些关键子讲解

面对对象常用的一些关键子:http://www.cnblogs.com/xishaonian/p/6146794.html排版不是很好望见谅. THE END 跟着百度学PHP[4]OOP面对对象编程-7-OOP的一些关键子讲解

跟着百度学PHP[4]OOP面对对象编程-5-内部引用$this

$this就是对象内部代表这个对象的引用 可以调用被封装的方法或者属性! <?php class Person{ private $name; private $age="21"; var $sex; function play(){ echo "他正在玩儿呢"; } private function Hello(){ //使用private封装hello方法.该方法不可直接调用.但是可以在内部使用$this调用. echo "这个是被封装的内容&q