2025年焦旭超201771010109《面向对象程序设计(java)》第六周学习总结

焦旭超201771010109《面向对象程序设计(java)》第六周学习总结理论知识部分 一 类 超类和子类 1 类继承的格式 class 新类名 extends 已有类名 2 已有类称为 超类 superclass 基类 base class 或父类 parent class 新类称作 子类

大家好,我是讯享网,很高兴认识大家。

理论知识部分

一、类、超类和子类

1类继承的格式: class 新类名extends已有类名。

2. 已有类称为:超类(superclass)、基类(base class) 或父类(parent  class)

新类称作:子类(subclass)、派生类(derived  class)或孩子类(child class)

3.super是一个指示编译器调用超类方法的特有关键字,它不是一个对象的引用,不能将super赋给另一个对象变量

4.从一个超类扩展而来的类集合称为继承层次。在继承层次中,某个类到其祖先的路径被称为该类的继承链。

注:Java不支持多继承。

5.多态性:多态性泛指在程序中同一个符号在不同的情况 下具有不同解释的现象。

6. 不允许继承的类称为final类,在类的定义中用final修饰符加以说明

7.抽象类:抽象方法充当着占位的角色,它们的具体实现在子类中。

抽象类不能被实例化,即不能创建对象,只能产生子类。

二、Object:所有类的超类

1 Object类是Java中所有类的祖先——每一个类都由它扩展而来。在不给出超类的情况下,Java会自动把Object 作为要定义类的超类。

2.可以使用类型为Object的变量指向任意类型的对象。但要对它们进行专门的操作都要进行类型转换。

3. Object类中的equals方法用于测试某个对象是否同另一个对象相等。它在Object类中的实现是判断两个对象是否具有相同的引用。如果两个对象具有相同的引用,它们一定是相等的。

4. Object类中的hashCode方法导出某个对象的散列码。散列码是任意整数,表示对象的存储地址。

两个相等对象的散列码相等。

三.泛型数组列表

1. Java中,利用ArrayList类,可允许程序在运行时确定数组的大小。.

2.ArryList是一个采用类型参数的泛型类。为指定数组列表保存元素的对象类型,需要用一对尖括号将数组元素对象类名括起来加在后面。

ArryList<Employee> staff=new ArrayList<Employee>();

四.对象包装器和自动打包

1. 所有基本数据类型都有着与之对应的预定义类,它们被称为对象包装器。

2. 对象包装器类是不可变的,即一旦构造了包装器,就不允更改包装在其中的值。且对象包装器类还是final,因此不能定义它们的子类。


讯享网

3. 在JavaSE5.0中,可以自动的将基本数据类型转换为包装器类的对象,将这种变换称为自动打包

五.参数数量可变的方法

1. 在Java SE 5.0以前的版本中,每个Java方法都有固定数量的参数。然而,现在的版本提供了可以用可变的参数数量调用的方法(称为“可变参 ”方法)。

2. 用户自己可以定义可变参数的方法,并将参数指定为任意类型,甚至是基本类型。

六.枚举类

1. 声明枚举类

 publicenumGrade{A,B,C,D,E};

它包括一个关键字enum,一个新枚举类型的名字 Grade以及为Grade定义的一组值,这里的值既非整型,亦非字符型。

2. 枚举类是一个类,它的隐含超类是java.lang.Enum。

3.枚举值并不是整数或其它类型,是被声明的枚举类的自身实例

七.继承设计的技巧

1. 将公共操作和域放在超类。

2.不要使用受保护的域。

3.使用继承实现“is-a”关系。

4.除非所有继承的方法都有意义,否则就不要使用继承。

5.在覆盖方法时,不要改变预期的行为。

6.使用多态,而非类型信息。

7.过多地使用反射。

实验部分

实验一

测试程序1:

在elipse IDE中编辑、调试、运行程序5-1 (教材152页-153

掌握子类的定义及用法;

结合程序运行结果,理解并总结OO风格程序构造特点,理解Employee和Manager类的关系子类的用途,并在代码中添加注释。

/** * This program demonstrates inheritance. * @version 1.21 2004-02-21 * @author Cay Horstmann */ public class ManagerTest { public static void main(String[] args) { // construct a Manager object //构建管理者对象 Manager boss = new Manager("Carl Cracker", 80000, 1987, 12, 15); boss.setBonus(5000); Employee[] staff = new Employee[3];//定义一个包含三个雇员的数组 // fill the staff array with Manager and Employee objects //用Manager和Employee对象填充人员数组  staff[0] = boss; staff[1] = new Employee("Harry Hacker", 50000, 1989, 10, 1); staff[2] = new Employee("Tommy Tester", 40000, 1990, 3, 15); // print out information about all Employee objects //打印所有员工对象的信息 for (Employee e : staff) System.out.println("name=" + e.getName() + ",salary=" + e.getSalary()); //输出每个人的薪水  } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 package inheritance; import java.time.*; public class Employee { private String name; private double salary; private LocalDate hireDay; public Employee(String name, double salary, int year, int month, int day) { this.name = name; this.salary = salary; hireDay = LocalDate.of(year, month, day); } public String getName() { return name; }

讯享网
小讯
上一篇 2025-03-11 19:08
下一篇 2025-01-17 13:06

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/60405.html