201571030332 扎西平措 《面向对象程序设计Java》第八周学习总结

时间:2022-05-23 10:06:58

《面向对象程序设计Java》第八周学习总结

项目

内容

这个作业属于哪个课程

https://www.cnblogs.com/nwnu-daizh/

这个作业的要求在哪里

https://www.cnblogs.com/nwnu-daizh/p/11703678.html

作业学习目标

  1. 掌握接口定义方法;
  2. 掌握实现接口类的定义要求;
  3. 掌握实现了接口类的使用要求;
  4. 理解程序回调设计模式;
  5. 掌握Comparator接口用法;
  6. 掌握对象浅层拷贝与深层拷贝方法;
  7. 掌握Lambda表达式语法;
  8. 了解内部类的用途及语法要求。

第一部分  基础知识

一、第五章知识点巩固

(1)封装、继承和多态是面向对象的主要特征。

(2)继承可提高代码重用性,用extends关键字来实现,处构造方法之外,父类的所有方法和属性都被子类继承。同时也是多态特征的前提。

(3)继承建立了类与类之间的关系,同时也是多态特征的前提。

(3)JAVA值支持单继承,不直接支持多继承(避免两个父类出现同名方法的调用选择困难)。

(4)final类不允许被继承:类中final方法不允许被子类重写。

(5)abstract修饰的抽象类不能被实例化为对象,只能阔展子类:抽象类中的方法充当着占位的角色。他们的具体实现在子类中。

(6)父/子类成员的使用特点:

属性域:子类中如果想要调用父类中的属性值,需要使用一个关键字:supper

成员方法:当父/子类中出现同名方法时,建立子类对象则运行子类中的方法。

构造方法:因为子类继承父类,需继承到父类的数据,所以子类构造方法第一行先调用父类的构造方法(supper方法)

(7)方法多态分类:

静态(编译)解析:方法重载

动态绑定解析:方法覆写

(8)控制可见性的4个访问权限修饰符:public、protected、friendly、private.(必须掌握!!!)

(9)Object类是所有类的超类。Java.lang

该类的常用API有:—equals()  -toString()   -getname()   -hashCode()

(10)ArrayList类是一个采用类型参数的范数数组类:

Java.util   例如:ArrayList<Employee> staff=new ArrayList<Employee>();

该类常见的API有:-add()  -size()  -get()

(11)JAVA为解决基本数据类型演变为类对象的问题,JAVA定义与基本数据类型对应的对象包装器类。

(12)对象包装器类:与各个基本类型对应的类,都是从公共包装器类Number继承而来的,这些类有:-Integer  Long  Float   Double  Short  Byte  Character   Void  Boolean

(13)用关键字enum可定义用户自定枚举类:

用户自定义枚举类的超类是Enum类:java.lang

Enum类的常见的API有(190):

-valueOf()  -toString()  -Ordianl()  -compareTo()

(14)类之间的关系:

依赖:如果有一个类中的方法操作了另一个类的对象,那么这个类就依赖于另一个类。

聚合:类A的 对象包含类B的对象。

继承:表示一个特定的类和一个一般的类之间的关系。一般来说类A继承了类B,那么类A不仅继承类B的方法和状态,而且还有属于自己的方法和状态。

二、第六章知识内容

(1)接口、lambda表达式和内部类

(a)接口:java为了克服单继承的缺点,java使用了接口,一个类可以实现一个或多个接口。

(b)在Java中,接口不是类,而是对类的一组需求描述,有常量和一组抽象方法组成。接口中不包括变量和有具体实现的方法。只要类实现了接口,则该类要遵从接口描述的同意格式进行定义,并且可以在任何需要该接口的地方使用这个类的对象。

(c)接口类型:

a 用户自定义接口,

b 标准接口。

自定义接口的声明:  public  interface  接口名{...}

接口体中包含常量定义和抽象方法定义,在接口中之进行方法的声明,不提供方法的实现。

C 类似建立类的继承关系,接口也可以扩展

(d)扩展方法:

Public interface 接口1   extends  接口2

{.......}

注意:通常接口的名字以able或ible结尾。

可以使用extends来继承接口的常量和抽象方法,扩展形成新的接口。

接口中的所有常量必须是public static final,方法必须是public abstract,这是系统默认的,写不写修饰符都是一样的。

(2)接口的实现

在类声明是用implements关键字声明使用一个或多个接口:

Class   Employee   implements  Cloneable, Comparable(实现多接口)

说明:实现接口的类不是抽象类,则必须实现所有接口的所有方法,即为所有的抽象方法定义方法体。

一个类在实现某接口抽象方法时,必须使用完全相同的方法名、参数列表和返回值类型。

接口抽象方法的访问控制符已指定为public,所以立类在实现时,必须现实地使用public修饰符。负责会被警告缩小了接口中定义的方法的访问控制范围。

(3)接口的使用

接口不能构造接口对象但可以声明接口变量以指向一个实现了该接口的类对象。

例:Comparable x=new Employee(...)

(4)接口与抽象类

抽象类:用abstract来声明,没有具体实例对象的类,不能用new来创建对象。可包含常规类所包含的任何东西。抽象类必须有子类继承,如果abstract类的子类不是抽象类,那么子类必须重写父类中所有方法的abstract方法。

接口:用interface声明,是抽象方法和常量值定义的集合。接口是一种特殊的抽象类,当中只包含常量和法昂发的定义,二没有变量和的方法。接口中只能定义抽象方法而且这些方法默认的是Publicde .只要实现了接口,就可以在任何需要该接口的地方使用这个类的对象。此外,一个类可以实现多个接口。

(5)接口与抽象类的区别

a>接口不能实现任何方法二抽象类方法可以。

b>类可以时下按多个接口但只有一个类。

c>接口不是类分级的一部分,无任何联系的类可以实现相同的接口。

(6)接口与回调

回调:可以指出某个特定的事件发生时程序应采取的动作的模式。

(7)Comparator接口

Comparator接口所在的包为:java.util.*

Comparator接口定义

public interface  Comparator<T>{

int compare(T o1,T o2);.

......

}

Comparator 接口可用来处理字符串按长度进行排序的操作。

(8)对象克隆

a>Object类的克隆方法

当拷贝一个对象变量时,原始变量与拷贝变量引用同一个变量。改变一个变量所引用的对象会对两一个变量产生影响。

如果要创建一个对象新的Copy,它的最初状态与Original类的克隆方法。

Object类中的clone()方法是一个native方法。

Object类中的Clone()方法被protect修饰符修饰(意味着用户不能直接调用它)。如果要直接调用clone(),就需要覆盖clone()方法,并将Clone()方法属性设置成为public.

Object clone()方法返回一个Object对象。

b>浅层拷贝与深层拷贝

浅层拷贝:被拷贝的对象的所有成员域所有常量成员和基本类型属性都有与原来对象相同的拷贝值,而当成员域是一个对象,则被拷贝的对象域的该对象引用任然指向原来的对象。

深层拷贝:被拷贝的所有成员域都含有域原来对象的相同的值,且对象域将指向被复制过的新对象而不是源于对象被复制过的对象。深层拷贝将拷贝对象内引用的对象也拷贝一遍。

c>Java中对象克隆的实现

在子类中实现Cloneable接口。

为了获取对象的一份拷贝,可以利用Object类中的Clone方法。

在子类中覆盖超类的clone方法,声明为Public。

在子类的clone方法中,调用super.clone().

(9)对象克隆的要点

在类中实现Cloneable接口

为了获取对象的一份拷贝,使用Objcet类的clone方法。

在类中覆盖超类的clone方法,声明为public。

在类的clone方法中,调用super.clone().

(10)Lambda的表达式

Lambda的主要用途是提供一个函数化的语法来简化编程。Lambda的表达式本质上是一个匿名方法。

Public  int  add(int  x, int  y){

return  x+y; }

Lambda表达式的基本语法结构

(argument)—>body

   第二部分 实验内容和步骤

实验1 导入第6章示例程序,测试程序并进行代码注释。

测试程序1:

l 编辑、编译、调试运行阅读教材214页-215页程序6-1、6-2,理解程序并分析程序运行结果;

l 在程序中相关代码处添加新知识的注释。

l 掌握接口的实现用法;

掌握内置接口Compareable的用法。