《Java大学教程》—第14章 抽象、继承和接口
自测题:
1. 解释抽象和抽象数据类型的概念。P333
抽象的概念是仅仅关注对象可以完成什么工作,而不必担心如何完成工作的细节。
类模板通常被称为抽象数据类型。因为这类数据暴露给用户的所有信息仅仅是方法的描述(输入、输出和行为)和数据的相关信息(属性)。
2. 动态(运行时)绑定和静态(编译时)绑定的区别。P335
编译时绑定(compile-time binding)或静态绑定(static binding)技术:
当一个类的代码被编译后,该类的每个方法的代码都会随之编译;编译器将确保该类的对象接收一个调用其方法的消息时,
程序都会跳转到该方法的代码的存储位置--该方法的指令将会被执行,之后程序将返回最初的位置。
运行时绑定(run-time binding)或动态绑定(dynamic binding)技术:
每次创建一个新的对象时,必须记录其方法存储位置的信息;这样对于调用哪个方法的决定可以推迟到运行时决定。
3.
a) 解释Java中接口和适配器的区别。
接口:(P336)是一个类的所有方法都声明为抽象方法。因此实现接口时必须为该接口的所有方法编码。
适配器:(adapter,P348)是一个特殊的类,实现了接口的所有方法,扮演类与接口之间的中介角色,继承适配器类就不必为所有的方法编码。
b)
public interface SomeInterface{
public void method1();
public int method2();
}
public SomeAdapter extends SomeInterface{
public void method1(){ }
pupblic int method2(){ }
}
4. 解释内部类的作用,描述内部类的使用方法。P349
在Java中一个类只允许继承一个超类,不能继承多个超类(多继承,multiple inheritance)。为了继承业务类,又能够使用适配器类,可以借助内部类来实现。
即在其他类的内部创建一个类,这个内部类继承适配器类。这个内部类不能为程序中其他类服务,从而实现更好地封装。
5. 第7章的Oblong类的toString方法。
public String toString(){
return "Length:"+length+",\t"+"Height:"+height;
}
编程练习:代码附件
1. RedCircle.java
2.
a) Checkable.java
b) BankAccount.java
c) RunAccount.java
d) Oblong.java OblongTester.java
注:length和heigth属性本身就定义为double,为何还要整数呢?所以我只考虑了非负的问题。
3. DrawRectangle.java DrawRectangleWithAdapter.java
RunDrawRectangle.java RanDrawRectangleWithAdapter.java
4. SomeGraphicsClass.java // 这个类为了给第5题服务,部分代码修改了,有些专属部分放在子类中定义。
Question4.java
5. Question5.java
《Java大学教程》—第14章 抽象、继承和接口的更多相关文章
- 正在学习的Java大学教程
推荐本书<Java大学教程> 看的人比较少,我也是多年不看书了,基于教程一般选国外的方法,从图书馆选了本书. 看了一半,感觉书的内容比较认真,对于基本的Java知识都算介绍全了,而且全书是 ...
- “全栈2019”Java第五十二章:继承与初始化详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第四十六章:继承与字段
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第四十四章:继承
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Java面向对象程序设计第14章3-8和第15章6
Java面向对象程序设计第14章3-8和第15章6 3.完成下面方法中的代码,要求建立一个缓冲区,将字节输入流中的内容转为字符串. import java.io.*; public class tes ...
- “全栈2019”Java第六十六章:抽象类与接口详细对比
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 《Java大学教程》—第17章 Java聚焦类框架
由所有聚焦类构成,在java.util包中,包含三个重要接口:* List列表:元素为单个对象,元素在列表中是有序.可重复* Set集合:元素为单个对象,元素在集合中无序.不可重复* ...
- 《Java大学教程》—第8章 通过继承扩展类
8.2 继承(inheritance):继承是指在类之间共享属性和方法.继承关系是一种层次关系.在继承关系中位于顶部的类称为超类(或基类),位于下面的类称为子类(或派生类).类型转换(type ...
- 《Java大学教程》—第24章 Java的背景
本章主要介绍的是Java的背景知识,通过了解历史知道Java与其他语言的区别,以便更好选择在什么场景下使用Java. 24.2 语言的尺寸Java语言短小.紧凑,以C++为基础,放弃了一些特定的 ...
随机推荐
- C#装箱和拆箱。
装箱:值类型-->引用类型. 拆箱:引用类型-->值类型 装箱:把值类型拷贝一份到堆里.反之拆箱. 具有父子关系 是拆装箱的条件之一. 所以: class Program { static ...
- 怎样监听vue.js中v-for全部渲染完成?
vue里面本身带有两个回调函数: 一个是Vue.nextTick(callback),当数据发生变化,更新后执行回调. 另一个是Vue.$nextTick(callback),当dom发生变化,更新后 ...
- .net core2.0+nginx+Ubuntu14.04【一个小白的初次尝试】
新的业务来了,需要使用linux环境部署web服务,作为一个C#的懒惰程序员,就这么上了车[狗脸],废话不多说,跟我一样的小白请看,大神请绕路. 站点暂时没有使用Docker部署,为什么呢,因为我还没 ...
- mybatis_12延时加载_懒加载
延时加载:也叫懒加载 2.1 延迟加载 延迟加载又叫懒加载,也叫按需加载.也就是说先加载主信息,在需要的时候,再去加载从信息. 在mybatis中,resultMap标签 的association标签 ...
- 【Java每日一题】20170119
20170118问题解析请点击今日问题下方的“[Java每日一题]20170119”查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; import jav ...
- java关于字符串的一些实用操作工具类方法
package cn.edu.stdu; import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.Se ...
- mysql给root开启远程访问权限
MySql-Server 出于安全方面考虑默认只允许本机(localhost, 127.0.0.1)来连接访问. !!!所以必须给root修改可以远程访问的权限 1.在连接服务器后,操作mysql系统 ...
- H5_canvas与svg
Canvas 什么是canvas: HTML5 的 canvas 元素是使用 JavaScript 在网页上绘制图像,canvas 元素本身是没有绘图能力的,所有的绘制工作必须在 JavaScript ...
- 9;XHTML 多媒体
1.FLASH 动画的插入 2.MP3 及 WMV 视频的插入 3.网络流媒体视频的插入 使用 Web 如此流行的原因之一是可以再网页上加入图像.声音.动画和电影文件.虽然 过去对这些文件大小的限制局 ...
- JS中的可枚举属性与不可枚举属性以及扩展
在JavaScript中,对象的属性分为可枚举和不可枚举之分,它们是由属性的enumerable值决定的.可枚举性决定了这个属性能否被for…in查找遍历到. 一.怎么判断属性是否可枚举 js中基本包 ...