【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抽象类)》的更多相关文章
-
Java学习笔记之---比较接口与抽象类
Java学习笔记之---比较接口与抽象类 抽象类是描述事物的本质,接口是描述事物的功能 接口与抽象类的异同 1.一个类只能继承一个父类,但是可以有多个接口 2.抽象类中的抽象方法没有方法体,但是可以有 ...
-
【Java学习笔记之二十一】抽象类在Java继承中的用法小结
一.抽象类的基本概念 普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法.普通方法.static方法.常量和变量等内容.而抽象类是指在普通类的结构里面增加抽象方法的组成 ...
-
Java学习笔记(10)
目前多态情况下不能访问子类特有的成员 如果需要访问子类特有的成员,那么需要进行类型强制转换,转换为子类的类型然后再进行调用 基本数据类型的转换: 小数据类型------------->大数据类型 ...
-
java学习笔记—Servlet技术(11)
如果大家要开发一个动态的网站,那么就必须要学习一种动态的网页开发技术.那么在SUN提供的JavaEE中主要包含两种开发动态网页的技术:Servlet和JSP技术. Servlet技术简介 Servle ...
-
Linux学习笔记(10)linux网络管理与配置之一——主机名与IP地址,DNS解析与本地hosts解析(1-4)
Linux学习笔记(10)linux网络管理与配置之一——主机名与IP地址,DNS解析与本地hosts解析 大纲目录 0.常用linux基础网络命令 1.配置主机名 2.配置网卡信息与IP地址 3.配 ...
-
Java程序猿的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
-
《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
-
Java学习笔记4
Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...
-
Java学习笔记之---API的应用
Java学习笔记之---API的应用 (一)Object类 java.lang.Object 类 Object 是类层次结构的根类.每个类都使用 Object 作为超类.所有对象(包括数组)都实现这个 ...
-
20145330第七周《Java学习笔记》
20145330第七周<Java学习笔记> 第十三章 时间与日期 认识时间与日期 时间的度量 GMT(格林威治标准时间):现在不是标准时间 世界时(UT):1972年UTC出来之前,UT等 ...
随机推荐
-
[.net 面向对象程序设计进阶] (14) 缓存(Cache) (一) 认识缓存技术
[.net 面向对象程序设计进阶] (14) 缓存(Cache)(一) 认识缓存技术 本节导读: 缓存(Cache)是一种用空间换时间的技术,在.NET程序设计中合理利用,可以极大的提高程序的运行效率 ...
-
poi导出word、excel
在实际的项目开发中,经常会有一些涉及到导入导出的文档的功能.apache开源项目之一poi对此有很好的支持,对之前的使用做一些简要的总结. 1,导入jar 为了保证对格式的兼容性,在项目的pom.xm ...
-
软考之PV操作(同步)
这几天,陆续有那么三两个同学跟我讨论了一下关于软考上的PV操作的题,吾虽不才,但还是把同学们讲通了,在此,特分享一下自己的思路和想法,愿对大家有点帮助! 下面,我们就通过自己做过的试卷上两道题来分析: ...
-
Authorized users only. All activity may be monitored and reported.
Authorized users only. All activity may be monitored and reported. Directory: /home/oracle 如出现如上问题,是 ...
-
Google幻灯片
本博文的主要内容有 .Google幻灯片的介绍 https://www.google.com/intl/zh-CN/slides/about/ 自行去注册Google账号,这里,不多赘述.
-
dev中TreeList的应用(转)
如果需要在单元格添加时则用TreeList如果只是单纯读取数据或检索数据时则用GridControl 1.如果点击添加 时则添加TreeList的节点: protected internal void ...
-
Easy machine learning pipelines with pipelearner: intro and call for contributors
@drsimonj here to introduce pipelearner – a package I'm developing to make it easy to create machine ...
-
C#读取CSV
public class CSVFileHelper { /// <summary> /// 将DataTable中数据写入到CSV文件中 /// </summary> /// ...
-
phpadmin登录报错:#1045 - Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: yes)
原因:phpmyadmin无法通过root+密码联系mysql; 解决方法:重置mysql密码. 步骤: 1.cmd 2.登录MySQL:mysql -uroot -p ->root是用户 ...
-
sqlserver sp_spaceused用法
sp_spaceused显示行数.保留的磁盘空间以及当前数据库中的表所使用的磁盘空间,或显示由整个数据库保留和使用的磁盘空间. 语法sp_spaceused [[@objname =] 'objnam ...