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⑹的更多相关文章

  1. c#面向对象基础技能——学习笔记(二)基于OOP思想研究对象的【属性】

    字段(成员变量): 字段只能从对象中访问实例字段,无法直接从类中访问(换言之,不创建实例就不能访问),可以理解为:字段一般用在内部数据交互使用,当需要为外部提供数据时,(要优先使用自动实现的属性而不是 ...

  2. 一个简单oop的changeTab

    好多地方都会用到这样一个效果“点击tab切换内容页”,根据自己的想法实现了一下,写了个简单的插件.以前写代码都是标准的函数式编程,现在觉得面向对象编程看起来比较爽,并且更容易维护,于是就用oop的思想 ...

  3. Python OOP(面向对象编程)

    一OOP的作用 在Python中,类是面向对象设计(OOP)的主要工具.通过使用类这种工具,OOP可以: 1.分解代码,最小化代码的冗余. 2.通过定制现有的代码,来编写新的程序,而不用在原处进行修改 ...

  4. OOP,WEB开发实用小技巧

    偶然读到一篇博客,记录一下心得.这种设计对于新手来说一般是想不到的,它充分的发挥了OOP语言的特性,让代码专用而清爽.这是不是重构的思想呢? 我们在写业务层的时候,有很多方法是重复功能的,我们就可以使 ...

  5. 从OOP的角度看Golang

    资料来源 https://github.com/luciotato/golang-notes/blob/master/OOP.md?hmsr=toutiao.io&utm_medium=tou ...

  6. 玩转JavaScript OOP[2]——类的实现

    概述 当我们在谈论面向对象编程时,我们在谈论什么?我们首先谈论的是一些概念:对象.类.封装.继承.多态.对象和类是面向对象的基础,封装.继承和多态是面向对象编程的三大特性. JavaScript提供了 ...

  7. Atitit 面向对象编程(OOP)、面向组件编程(COP)、面向方面编程(AOP)和面向服务编程(SOP)的区别和联系

    Atitit 面向对象编程(OOP).面向组件编程(COP).面向方面编程(AOP)和面向服务编程(SOP)的区别和联系 1. 面向组件编程(COP) 所以,组件比起对象来的进步就在于通用的规范的引入 ...

  8. iOS - 对OOA、OOD、OOP的理解

    很多人在求职的时候,会遇到一个这样的问题:“对OOD/OOP有较深的理解”,这个时候有人就会问OOD.OOP是什么呢?那么今天咱们就一块来看一下OOA.OOD.OOP到底是什么! (一)OOA--面向 ...

  9. OOP感悟

    行内讲的最多的就是出来一年内基本靠copy,一年后才基本懂得如何去写代码,而理解领悟oop,需要的时间却不定. 我工作中,我发现很多人拿着面向对相当的语言作者做着面向过程的事情,不需要知其所以然,只要 ...

  10. 初识JAVA之OOP

    有一段时间没发博客了,每次手打还是很累,但感觉很充实.. 最近发现很多初学者到了面向对象编程这个知识点时,不太清楚类是如何转化成为对象的,很是困扰,今天我在这里谈谈我的理解,大家一起来研究学习... ...

随机推荐

  1. Codeforces 984 D - XOR-pyramid

    D - XOR-pyramid 思路: 区间dp dp[l][r]表示ƒ([l, r])的值 显然,状态转移方程为dp[l][r] = dp[l][r-1] ^ dp[l+1][r] 初始状态dp[i ...

  2. Codeforces 934D - A Determined Cleanup

    934D - A Determined Cleanup 思路: 找规律,和k进制的求法差不多,答案的奇数位是p%k,偶数位如果p%k!=0,那么答案是k-p%k,否则为0. 代码: #include& ...

  3. 浏览器缓存之Expires Etag Last-Modified max-age详解

    前段时间去面试移动端的H5开发工程师,在最后面试的时候被问到了max-age Expires Etag有什么不同,在什么情况下应用,当时乱编了一通,自我感觉良好,结果…… 大家懂得,现在讲他们几个的区 ...

  4. java再次学习

    1.maven配置.

  5. 移动采编app

    大家好: 移动采编app用到了一些非该app定义的控件,比如照相机以及涉及到权限的弹窗等.这部分控件的元素id在不同品牌甚至同一品牌不同型号的手机上可能是不同的,因此安卓自动化中需要对这种情况做相应的 ...

  6. 日常英语---六、Maplestory Illium

    日常英语---六.Maplestory Illium 一.总结 一句话总结: maplestory-['meiplstɔri]  illium-镍铬合金 ['meiplstɔri]  n. 枫之谷(网 ...

  7. if标签

    If标签如果php中if语句的作用,if是用于流程控制的. 在ThinkPHP中if标签也是用于流程控制的. If标签的语法格式: <if condition=’条件表达式’> 输出结果1 ...

  8. spring cloud: Hystrix(二):简单使用@HystrixCommand的commandProperties配置@HistrixProperty隔离策略

    spring cloud: Hystrix(二):简单使用@HystrixCommand的commandProperties配置@HistrixProperty隔离策略 某电子商务网站在一个黑色星期五 ...

  9. 最简单的TTcpServer与TTcpClient通信实例-Delphi

    unit TcpSCDemo;//最简单的TTcpServer与TTcpClient通信实例-Delphi //Borland推出TTcpServer与TTcpClient作为主要的网络通信控件,意味 ...

  10. vmware 10.0 安装centos6.5 客户系统 几个问题

    1. vmware 10.0 安装centos6.5 客户系统 无法修改分辨率 要安装 desktop, KDE, legacy,x  组件 2. NAT 方式网卡无法自行启动 vim /etc/sy ...