OOP⑹
1.抽象类
- 所有由abstract关键字修饰的方法我们称之为 抽象方法!
- 抽象方法只能存在于 抽象类中!
- 所有由abstract关键字修饰的类我们称之为 抽象类!
- 抽象类的特点:
- 01.由abstract关键字修饰
- 02.类中可以有抽象方法也可以有普通方法
- 03.子类必须重写父类的所有抽象方法,除非子类也是抽象类!
- 04.抽象类不能实例化!但是可以有构造方法!
- final:
- 01.如果一个属性值不希望被修改 在属性前加final
- 02.如果一个方法不希望被重写 在方法上加 final
- 03.如果一个类不希望被继承 在类上加final
- /**
- * 所有动物的父类
- */
- public abstract class Animal {
- /**
- * 定义所有动物共有属性
- */
- private int age; // 年龄
- private String name; // 姓名
- /**
- * 所有动物公共的行为
- * 01.如果不在子类中重写这个eat方法!那么所有的动物吃东西都执行这一个方法!
- * 显然这种方式不可行! 怎么办? 子类重写eat()!
- * 02.重写方法之后,得到了我们想要的结果! 每个动物吃饭的方法都不一样!
- * 我们又发现了一个问题! 父类的这个eat()中的输出语句 有意义???
- * 这个输入语句会得到执行吗?? 只要我们重写 这个eat不可能执行!
- * 那么我们就删除这句话!方法体就没了!{}也删除
- * 报错了??为什么报错!
- * 001.加方法体,刚删除,这种方式不可行!
- * 002.在方法声明时,加入abstract关键字! 可行!
- *
- * 所有由abstract关键字修饰的方法我们称之为 抽象方法!
- * 抽象方法只能存在于 抽象类中!
- *
- * 又报错了??
- * 001.删除abstract关键字 ! 不可行!
- * 002.在类上加入abstract关键字
- *
- * 所有由abstract关键字修饰的类我们称之为 抽象类!
- *
- */
- public abstract void eat();
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Animal() {
- super();
- }
- public Animal(int age, String name) {
- super();
- this.age = age;
- this.name = name;
- }
- @Override
- public String toString() {
- return "Animal [age=" + age + ", name=" + name + "]";
- }
- }
抽象方法和抽象类
- /**
- * 因为cat不是抽象类,所以必须实现父类中所有的抽象方法
- */
- public class Cat extends Animal {
- @Override
- public void eat() {
- System.out.println("小猫咪在吃鱼!");
- }
- }
抽象方法和抽象类
- /**
- * 因为dog是抽象类 所以不需要 重写animal的抽象方法,也可以重写
- */
- public abstract class Dog extends Animal {
- }
抽象方法和抽象类
- public class AnimalTest {
- public static void main(String[] args) {
- // 创建小狗和小猫咪的实例
- // Dog dog = new Dog(); 抽象类 不允许实例化
- // 调用小狗吃东西的方法
- // dog.eat();
- Cat cat = new Cat();
- // 调用小猫咪吃东西的方法
- cat.eat();
- }
- }
抽象方法和抽象类
OOP⑹的更多相关文章
- c#面向对象基础技能——学习笔记(二)基于OOP思想研究对象的【属性】
字段(成员变量): 字段只能从对象中访问实例字段,无法直接从类中访问(换言之,不创建实例就不能访问),可以理解为:字段一般用在内部数据交互使用,当需要为外部提供数据时,(要优先使用自动实现的属性而不是 ...
- 一个简单oop的changeTab
好多地方都会用到这样一个效果“点击tab切换内容页”,根据自己的想法实现了一下,写了个简单的插件.以前写代码都是标准的函数式编程,现在觉得面向对象编程看起来比较爽,并且更容易维护,于是就用oop的思想 ...
- Python OOP(面向对象编程)
一OOP的作用 在Python中,类是面向对象设计(OOP)的主要工具.通过使用类这种工具,OOP可以: 1.分解代码,最小化代码的冗余. 2.通过定制现有的代码,来编写新的程序,而不用在原处进行修改 ...
- OOP,WEB开发实用小技巧
偶然读到一篇博客,记录一下心得.这种设计对于新手来说一般是想不到的,它充分的发挥了OOP语言的特性,让代码专用而清爽.这是不是重构的思想呢? 我们在写业务层的时候,有很多方法是重复功能的,我们就可以使 ...
- 从OOP的角度看Golang
资料来源 https://github.com/luciotato/golang-notes/blob/master/OOP.md?hmsr=toutiao.io&utm_medium=tou ...
- 玩转JavaScript OOP[2]——类的实现
概述 当我们在谈论面向对象编程时,我们在谈论什么?我们首先谈论的是一些概念:对象.类.封装.继承.多态.对象和类是面向对象的基础,封装.继承和多态是面向对象编程的三大特性. JavaScript提供了 ...
- Atitit 面向对象编程(OOP)、面向组件编程(COP)、面向方面编程(AOP)和面向服务编程(SOP)的区别和联系
Atitit 面向对象编程(OOP).面向组件编程(COP).面向方面编程(AOP)和面向服务编程(SOP)的区别和联系 1. 面向组件编程(COP) 所以,组件比起对象来的进步就在于通用的规范的引入 ...
- iOS - 对OOA、OOD、OOP的理解
很多人在求职的时候,会遇到一个这样的问题:“对OOD/OOP有较深的理解”,这个时候有人就会问OOD.OOP是什么呢?那么今天咱们就一块来看一下OOA.OOD.OOP到底是什么! (一)OOA--面向 ...
- OOP感悟
行内讲的最多的就是出来一年内基本靠copy,一年后才基本懂得如何去写代码,而理解领悟oop,需要的时间却不定. 我工作中,我发现很多人拿着面向对相当的语言作者做着面向过程的事情,不需要知其所以然,只要 ...
- 初识JAVA之OOP
有一段时间没发博客了,每次手打还是很累,但感觉很充实.. 最近发现很多初学者到了面向对象编程这个知识点时,不太清楚类是如何转化成为对象的,很是困扰,今天我在这里谈谈我的理解,大家一起来研究学习... ...
随机推荐
- Asp.net core 学习笔记 ( Identity 之 Authentication )
和从前的 identity 区别不是很大. 从 2.1 开始 vs 模板的 identity 都被封装了起来, 你几乎看不到任何一行代码, 需要向下面这样打开它, 才能做修改. 说一下比较常用的配置 ...
- Robot framework--内置库xml学习(一)
Using lxml By default this library uses Python's standard ElementTree module for parsing XML, but it ...
- 手机计算器1+1=2---Appium自动化
要想计算1+1=2,首先要定位到按钮1,定位方式和selenium类似
- Python 编程快速上手 第十七章 操作图像
前言 在这一章节,讲了关于图像的三个方面的内容: 获得图像的相关信息:例如 RGBA 值,尺寸... 对图像进行编辑操作:例如 旋转,缩放... 在图像上绘制形状:例如 矩形,圆形... [Image ...
- 20171024xlVBA批量获取PPT\WORD\PDF页数
Public Sub ModifyFileNames() Dim FolderPath As String Dim FileNames As Variant Dim dotPos As Long Di ...
- PaaS平台型IT运维&运营模式能给企业带来什么?
关注嘉为科技,获取运维新知 什么是PaaS平台型IT自动化运维&运营模式 PaaS平台型IT运维和运维模式是指:将通用的运维能力与具体的运维场景解耦合,将能够复用的,具备独立功能的通用能力纳入 ...
- Confluence 6 配置边栏
如果你具有空间的管理员权限,你可以对空间的变量进行自定义,让你的空间具有自己的空间标识(logo),修改显示的继承关系和在空间中添加快捷方式以帮助用户在空间中进行快速导航. 希望开始配置空间边栏,选择 ...
- php中Redis的扩展
首先要下载 php_redis.dll 和 php_igbinary.dll 在官网(https://windows.php.net/downloads/pecl/snaps/redis/3.1.4/ ...
- Integer to English words leetcode java
问题描述: Convert a non-negative integer to its english words representation. Given input is guaranteed ...
- nyoj-1250-exgcd
机器人 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 Dr. Kong 设计的机器人卡尔非常活泼,既能原地蹦,又能跳远.由于受软硬件设计所限,机器人卡尔只能定点跳远 ...