首页 技术 正文
技术 2022年11月12日
0 收藏 682 点赞 2,138 浏览 2006 个字

学号 2018-2019-20175212 《Java程序设计》第5周学习总结

教材学习内容总结

接口

  1. 声明接口: interface 名字
  2. 接口体:接口体中只有常量无变量,只有抽象方法没有普通方法;所有常量的访问权限都为public,且都是static常量(允许省略publicfinalstatic、修饰符),抽象方法的访问权限也都是public。如
interface Printable {
int MAX = 100;
void add();
float sum(float x ,float y);
}

实现接口

1.类实现接口:使用 implements声明该类实现接口,如:

class A implements Printable,Addable;

2.重写接口中的方法:要非抽象类实现某个接口,那么此类必须重写接口中的所有方法。其中要去掉abstract修饰符、给出方法体,且方法的访问权限要明显的用public来修饰。

若是一个类实现一个接口,但没有重写接口中的所有方法,则此类必须是抽象类。如:

interface Computable{
final int MAX = 100;
void speak(String s);
int f(int x);
float g(float x, float y);
}
Abstract class A implements Computable{
public int f(int x) {
int sum = 0;
for(int i=1;i<=x;i++){
sum = sum +I;
}
return sum;
}
}

3.如果一个接口不加public修饰,就称作友好接口,可以被与该接口在同一包中的类实现。

若父类实现了某个接口,那么子类就自然实现了该接口,不必再声明。

import语句可以引入包中的接口,如 import java.io.*;

接口回调

接口回调指的是:可以把实现某一接口的类创建的对象的引用赋值给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口方法。(为之后复习此重点概念,下为引用书上示例程序)

interface  ShowMessage {
void 显示商标(String s);
}
class TV implements ShowMessage {
public void 显示商标(String s) {
System.out.println(s);
}
}
class PC implements ShowMessage {
public void 显示商标(String s) {
System.out.println(s);
}
}
public class Example6_2 {
public static void main(String args[]) {
ShowMessage sm; //声明接口变量
sm=new TV(); //接口变量中存放对象的引用
sm.显示商标("长城牌电视机"); //接口回调。
sm=new PC(); //接口变量中存放对象的引用
sm.显示商标("联想奔月5008PC机"); //接口回调
}
}

理解接口

  1. 接口可以抽象出重要的行为标准,该行为标准用抽象方法来表示。
  2. 可以把实现接口的类的对象的引用赋值给接口变量,该接口变量可以调用被该类实现的接口方法,即体现该类根据接口里的行为标准给出的具体行为。
  3. 核心思想就在于它可以要求某些类有相同名称的方法,但方法的具体内容(方法体的内容)可以不同。

接口与多态

接口产生的多态是指不同的类在实现同一个接口时可能具有不同的实现方式,那么接口变量在回调接口方式时就可能具有多种形态。

接口参数

如果一个方法的参数是接口类型,我们就可以将任何实现该接口的类的实例的引用传递给该接口参数,那么接口参数就可以回调类实现的接口方法。

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

  • 问题1:因为接口体只有抽象方法而没有普通方法,那么不禁思考接口体中是否可以自己定义构造方法?

  • 问题1解决方案:此问题是在学习教材6.2时提出,在学到后边的范例程序自我意识到, 接口体在使用上 并不同普通的类需要构造方法,而是使用implements指令在类的声明时使用。

  • 问题2:在P153的Example6_4中,为算开方运算,有一段代码是:Math.sqrt(a*b); ,然而整个程序的代码中没有引入过Math类或是带Math的包。

  • 问题2解决方案:经过上网查找发现,java.lang.Math包是建立java工程时自动导入的。

  • 问题3:在P153的Example6_4中,最后的输出函数一概往日的println而使用了printf,虽不会有编译运行上的错误,但因不换行导致如下图很不美观,不知为何??

  • 问题3解决方案:并没有得到什么硬核解答,因此问题对编程影响不大,故猜测此程序为另一位具有不同爱好的编者所写。

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

  • 问题1:教材P160中的编程题,在编写程序编译时出现下图错误而不理解。

  • 问题1解决方案:接口参数章节没有完全理解,此题中参数应填new Dog()和new Cat ,表示符合之前定义的数据类型的一个新对象。
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,082
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,556
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,406
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,179
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,815
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,898