学号 20175201张驰 《Java程序设计》第5周学习总结

教材学习内容总结

第六章

·1.接口的接口体中只可以有常量和abstract方法。

·2.和类一样,接口也是Java中一种重要的饮用型数据类型,接口变量中只能存放实现改接口的类的实例对象的引用;

·3当接口变量中存放了实现接口的类的对象的引用后,接口变量就可以调用类实现的接口方法,这一过程被称为接口回调。

·4和子类体现多态类似,由接口产生的多态就是指不同的类在实现同一个接口时可能具有不同的实现方式;

·5在使用多态设计程序时,要熟练使用接口回调技术以及面向接口编程的思想,以便提现程序设计所提倡的“开-闭原则”

教材学习中的问题和解决过程

  • 问题1:abstract和interface的区别总结

  • 问题1解决方案:

    总结:

    共同点

    A.两者都是抽象类,都不能实例化

    B.Interface实现类和abstract继承类都必须实现抽象方法

    不同点

    A.Interface需要实现,用implements;Abstract 需要继承,用exends

    B.一个类可以实现多个Interface ;一个类只能继承一个Abstract

    C.Interface强调功能的实现;Abstract强调从属关系

    D.Interface的所有抽象类都只有声明没有方法体;Abstract抽象方法可以选择实现,也可以选择继续声明为抽象方法,无需实现,留给子类去实现

    interface的应用场合

    A. 类与类之间需要特定的接口进行协调,而不在乎其如何实现。

  • 问题2:为什么要用接口?

  • 问题2解决方案:接口的使用并非总是从设计的角度来考虑。接口和C#其他语法现象一样,共同构成了C#整个语言体系。

    接口的意义在于 抽象、不拘细节,从而使同类事物在同一高度具有通用及可替代性。

    关于解耦,并不是接口能解耦,而是抽象能解耦 接口只是手段,如果两个事物有必然联系,那么就不会出现完全解耦,只能耦合转移。(摘自https://www.cnblogs.com/tianxue/p/5641555.html)

代码调试中的问题和解决过程

  • 问题1:接口的使用
  • 问题1解决方案:接口中不能声明变量;接口中不可以定义非抽象方法;接口的回调P149;接口中的常量不可以指定初值;接口中可以之声明常量,不声明变量

课后练习

3(1)15.0 /8.0

interface A {

double f(double x,double y);

}

class B implements A {

public double f(double x,double y) {

return x*y;

}

int g(int a,int b){

return a+b;

}

}

public class E {

public static void main(String args[]) {

A a = new B();

System.out.println(a.f(3,5));

B b = (B)a;

System.out.println(b.g(3,5));

}

}

(2)18/15

interface Com {

int add(int a,int b);

}

abstract class A{

abstract int add(int a,int b);

}

class B extends A implements Com{

public int add(int a ,int b) {

return a+b;

}

}

public class EE {

public static void main(String args[]) {

B b = new B();

Com com = b;

System.out.println(com.add(12,6));

A a = b;

System.out.println(a.add(10,5));

}

}

4.编程题

Animal.java

public interface Animal {

public abstract void cry();

public abstract String getAnimalName();

}

Simulator.java

public class Simulator {

public void playSound(Animal animal) {

   System.out.print("现在播放"+animal.getAnimalName()+"类的声音:");

   animal.cry();

}

}

Dog.java

public class Dog implements Animal {

public void cry() {

  System.out.println("汪汪...汪汪");

}

public String getAnimalName() {

  return "狗";

}

}

Cat.java

public class Cat implements Animal {

public void cry() {

  System.out.println("喵喵...喵喵");

}

public String getAnimalName() {

  return "猫";

}

}

Application.java

public class Application {

public static void main(String args[]) {

  Simulator simulator = new Simulator();

  simulator.playSound(new Dog());

  simulator.playSound(new Cat());

}

}

代码托管



学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 4000行 30篇 400小时
第五周 2581 6/6 10 linux学习

·

学号 20175201张驰 《Java程序设计》第5周学习总结的更多相关文章

  1. 学号 20175329 2018-2019-3《Java程序设计》第九周学习总结

    学号 20175329 2018-2019-3<Java程序设计>第八周学习总结 教材学习内容总结 第十五章 泛型 可以使用"class 名称"声明一个类,为了和普通的 ...

  2. 学号:201521123116 《java程序设计》第二周学习总结

    1. 本章学习总结 一:学习了string的类型,string的对象是不可变的,创建之后不能再修改 二:SET PATH/CLASSPATH和-cp的用法. 三:学习了Java API 文档的使用方法 ...

  3. 学号:201521123116 《java程序设计》第九周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己 ...

  4. 学号:201521123116 《java程序设计》第一周学习总结

    #1. 本章学习总结了解了班级的纪律和期末成绩组成.本周重点学习了java语言的特点具有简单性和结构中立.明白了jdk是java开发人员使用的一种工具,以及编写一个java程序的所需步骤,懂得了jdk ...

  5. 2018-2019-3《Java程序设计》第二周学习总结

    学号20175329 2018-2019-3<Java程序设计>第二周学习总结 教材学习内容总结      第二三章与我们所学习的C语言有很多的相似点,在这里我想主要就以我所学习的效果来讨 ...

  6. 学号 20175201张驰 《Java程序设计》第8周学习总结

    学号 20175201张驰 <Java程序设计>第8周学习总结 教材学习内容总结 第十五章 知识总结: 1.泛型类声明:可以使用"class 名称"声明一个类,例如:c ...

  7. 学号 20175201张驰 《Java程序设计》第7周学习总结

    学号 20175201张驰 <Java程序设计>第7周学习总结 教材学习内容总结 第八章 String类能有效地处理字符序列信息,它的常用方法有: public int length()可 ...

  8. 学号 20175201张驰 《Java程序设计》第6周学习总结

    学号 20175201张驰 <Java程序设计>第6周学习总结 教材学习内容总结 第7章 ·1.Java支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类称为内部类的外嵌类 ...

  9. 学号 20175201张驰 《Java程序设计》第4周学习总结

    学号 20175201张驰 <Java程序设计>第4周学习总结 教材学习内容总结 第5章 继承:避免多个类间重复定义共同行为,用我们已经有的类,去创建新的类 任何子类都可以继承它的父类的成 ...

随机推荐

  1. Git使用十:匿名分支和checkout命令

    匿名分支 新建个仓库,并且初始化,创建3个文件,并提交 此时在没有创建新分支的情况下,checkout一下,比如上一个快照 这一段话的意思是,使用了checkout命令,但是没有指定分支名,所以git ...

  2. 用es6方式的写的订阅发布的模式

    //发布订阅模式 class EventEmiter { constructor() { //维护一个对象 this._events = { } } on(eventName, callback) { ...

  3. AWS S3 递归上传文件和递归下载文件, 以及S3之间拷贝文件夹

    1. 递归上传文件: aws s3 cp 本地文件夹 s3://bucket-name -- recursive --region us-east-1 2. 递归下载S3上的文件夹: cd  本地下载 ...

  4. 工作笔记——使用Jest时遇到的一些问题

    最近公司想要从mocha+karma的前端单元测试方式转换到Jest,然后任务就分配给我了,好吧,在这之前连单元测试是什么都不知道.硬生生的开始写单元测试了,写这篇文章的初衷是因为在配置Jest的过程 ...

  5. .Net Core 部署到IIS

    微软官方教程: https://docs.microsoft.com/en-us/aspnet/core/publishing/iis?tabs=aspnetcore2x 在vs中创建.net cor ...

  6. 关于H5页面在iPhoneX适配

    ​1.  iPhoneX的介绍 屏幕尺寸 我们熟知的iPhone系列开发尺寸概要如下: △ iPhone各机型的开发尺寸 转化成我们熟知的像素尺寸: △ 每个机型的多维度尺寸 倍图其实就是像素尺寸和开 ...

  7. zabbix环境安装搭建

    一.Zabbix简介 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.zabbix由zabbix server与可选组件zabbix agent两部分组成. ...

  8. django——中间件

    1.中间件概念 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的是全局,所以需要谨慎实用,用不好会影响 ...

  9. Android SQL数据库应用实践 “问题点”“疑难点”“解析”

    应用 Android SQL 数据库时,遇到的问题: 场景1:Android SQL查询后,获取到Cursor并查询数据:遇到以下问题:"android.database.CursorInd ...

  10. VS2015编译FFMPEG,修改FFmpeg缓冲区大小解决实时流解码丢包问题,FFmpeg错误rtsp流地址卡死的问题,设置超时

    之前尝试过很多网上利用Windows编译FFmpeg的文章,都没有办法编译X64位的FFmpeg,有些教程中有专门提到编译64位的FFmpeg需要下载mingw-w64-install,但是编译的过程 ...