《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 安装并启动 ...
随机推荐
- UIButton 一个控件 实现 左图标右文本的效果
UIButton 一个控件 实现 左图标右文本的效果 如图,我们要实现一个 左边图标右边文本的效果,一般 可以考虑是 UIImageView + UILabel 不过,其实一个UIButton就可以搞 ...
- 能源项目xml文件 -- app-datasource.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- 企业用户选择Java多于.NET的 5个原因
.NET 和 Java 是当今社会最受欢迎的两种编程语言, 长期的发展和强大的功能使他们足以在编程界立足. 十余年的争论也没得到结果的一个话题就是——他们哪个更好一些? 今天, 我们不再去讨论JAVA ...
- HTML5自学笔记[ 11 ]canvas绘图基础1
html5新增<canvas>标签用于绘制图像,默认宽高是300*150,canvas的宽高需要在这里设置,在css中设置会有问题:设置的形状,如矩形,会等比缩放,而非设置的宽高. 在不支 ...
- (07)odoo扩展API
* 打开XML-RPC 连接 >>> import xmlrpclib >>> srv, db = 'http://localhost:8069', ' ...
- hibernate annotation注解方式来处理映射关系
在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,我在试了这两种方式 ...
- Java常用集合类详解
在Java中有一套设计优良的接口和类组成了Java集合框架,使程序员操作成批的数据或对象元素极为方便.所有的Java集合都在java.util包中. 在编写程序的过程中,使用到集合类,要根据不同的需求 ...
- nyoj------203三国志
三国志 时间限制:3000 ms | 内存限制:65535 KB 难度:5 描述 <三国志>是一款很经典的经营策略类游戏.我们的小白同学是这款游戏的忠实玩家.现在他把游戏简化一下,地 ...
- Java 迭代器理解
1.Iterator(迭代器) 作为一种设计模式,迭代器可以用于遍历一个对象,对于这个对象的底层结构不必去了解. java中的Iterator一般称为“轻量级”对象,创建它的代价是比较小的.这里笔者不 ...
- GPOR
[tengzhenzhen15@lu01 gpor]$ for ((i=0; i<=19; i++)) do ./gpor -S 0.4 X4058_300_gpor/mytask_train. ...