《JAVA学习笔记(14-10---14-11抽象类)》
- 【14-10】面向对象-抽象类的产生
- /*
- 描述狗,行为,吼叫。
- 描述狼,行为,吼叫。
- 发现他们之间有共性,可以进行向上抽取。
- 当然是抽取他们的所属共性类型,犬科。
- 犬科这类事物,都具备吼叫行为,但是具体怎么叫,是不确定的,是由具体子类来明确的。
- 这时在描述犬科时,发现了有些功能不具体,这些不具体的功能,需要在类中标识出来,通过Java关键字abstract(抽象).
- 定义了抽象函数的类也必须被abstract关键字修饰,被abstract关键字修饰的类是抽象类
- */
- /*
- 抽象类的特点。
- 1,抽象类和抽象方法都需要被abstract修饰。
- 抽象方法一定要定义在抽象类中。
- 2,抽象类不可以创建实例,原因,调用抽象方法没有意义。
- 3,只有覆盖了抽象类中所有的抽象方法后,其子类才可以实例化。
- 否则该子类还是一个抽象类。
- 之所以继承,更多是在于思想,是面对共性类型操作会更简单。
- */
- /*
- 细节问题:
- 1,抽象类是父类吗?
- 是的,因为是不断抽取而来的。
- 2,抽象类是否有构造函数呢?
- 有,虽然不能给自己的对象初始化,但是可以给自己的子类对象初始化。
- 抽象类和一般类的异同点:
- 相同:
- 1,它们都是用来描述事物,
- 2,它们之中都可以定义属性和行为。
- 不同:
- 1,一般类可以具体的描述事物。
- 抽象类描述事物的信息不具体。
- 2,抽象类中可以多定义一个成员,抽象函数。
- 3,一般类可以创建对象,抽象类不能创建对象。
- 3,抽象类中是否可以不定义抽象方法。
- 是可以的,那这个抽象类存在到底有什么意义呢?仅仅是不让该类创建对象。
- 4,抽象关键字abstract不可以和哪些关键字共存?
- 1,final (被final修饰的类不能有子类,而抽象类的定义就是为了子类继承它)
- 2,private(子类要继承抽象类的全部方法才可以创建对象,一旦被private了 子类就不知道了)
- 3,static (有了静态修饰的方法后,就可以被类名直接调用,而调用抽象类的抽象方法是没有用的)
- */
- abstract class Q
- {
- public abstract void houjiao();
- }
- class Dog extends Q
- {
- public void houjiao()
- {
- System.out.println("汪汪汪汪");
- }
- }
- class Wolf extends Q
- {
- public void houjiao()
- {
- System.out.println("嗷嗷嗷嗷");
- }
- }
- class Test
- {
- public static void main(String[] args)
- {
- Wolf wolf = new Wolf();
- wolf.houjiao();
- }
- }
- 【14-11】面向对象-抽象类的练习
- *
- 需求:公司中程序员有姓名,工号,薪水,工作内容。
- 项目经理除了有姓名,工号,薪水,工作内容,还有奖金。
- 对给出需求进行数据建模。
- 在问题领域中先找寻其中的对象。
- 程序员:
- 属性:姓名,工号,薪水
- 行为:工作
- 项目经理:
- 属性:姓名,工号,薪水,奖金
- 行为:工作
- 经过分析发现:程序员和经理都属于员工
- 员工:
- 属性:姓名,工号,薪水
- 行为:工作
- 但是员工的工作本身具有不具体性,应该是抽象,由具体的子类来体现
- */
- abstract class Employee
- {
- private String name;
- private String id;
- private double pay;
- public Employee(String name,String id,double pay)
- {
- this.name = name;
- this.id = id;
- this.pay = pay;
- }
- public abstract void work();
- }
- //程序员
- class Programmer extends Employee
- {
- public Programmer(String name,String id,double pay)
- {
- super(name,id,pay);
- }
- public void work()
- {
- System.out.println("code...");
- }
- }
- //项目经理
- class Manager extends Employee
- {
- private double bouns;
- public Manager(String name,String id,double pay,double bouns)
- {
- super(name,id,pay);
- this.bouns = bouns;
- }
- public void work()
- {
- System.out.println("manage");
- }
- }
- class AbstractTest
- {
- public static void main(String[] agrs)
- {
- System.out.println("");
- }
- }
《JAVA学习笔记(14-10---14-11抽象类)》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- appium支持中文输入
Appium 1.3.3以上.java:capabilities增加下面两项:capabilities.setCapability("unicodeKeyboard", " ...
- html年月日下拉联动菜单 年月日三下拉框联动
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- noip赛前小结4
真正的勇士,敢于面对惨淡的人生. 真正的OIer,敢于做ccop的题. 有种凄凉叫做这道数学题已经超出了我语文的理解范围. 有种愤怒叫做ccop类的信息题已经超出了我语文的理解范围和数学的理解范围. ...
- 《JavaScript权威指南》读书笔记(四)
日期:2015-12-06 事件传播:1.捕捉阶段2.运行阶段3.起泡阶段cookie和客户端持久性::HTML5引入了web应用缓存.LocalStorage.SessionStorage:使用XM ...
- 500 TypeError: Cannot read property 'connect.sid' of undefined
1:在写passport验证测试用例时,发现有几个引用中间件顺序的错误,检查发现,passport验证写的是session,在传错误信息的时候req.flash调用也需要用到session中间件,否则 ...
- 自定义Encoder/Decoder进行对象传递
转载:http://blog.csdn.net/top_code/article/details/50901623 在上一篇文章中,我们使用Netty4本身自带的ObjectDecoder,Objec ...
- [转]Java程序员们最常犯的10个错误
1.将数组转化为列表 将数组转化为一个列表时,程序员们经常这样做: List<String> list = Arrays.asList(arr); Arrays.asList()会返回一个 ...
- visual2012 快捷键
代码格式化:Ctrl+K+D 注释:VS2010是(Ctrl+E,C),VS2012是(Ctrl+K, Ctrl+C) 反注释:VS2010是(Ctrl+E,U),VS2012是(Ctrl+K, Ct ...
- netbios wins dns LLMNR
NetBIOS名称 Network Basic Input/Output System (RFC-1001,1002)网络基本输入/输出系统协议 NetBIOS是一种高级网络接口,最初是在硬件中实 ...
- java面向对象编程— —第七章 继承
7.1继承的起源 继承(Inheritance),即在面向对象编程中,可以通过扩展(extends)一个已有的类,并继承该类的属性的行为,来创建一个新的类. 已有的类称为父类(也可以称为基类,超类), ...