实验四 Java类继承 联系客服

发布时间 : 星期日 文章实验四 Java类继承更新完毕开始阅读eb81e53efe4733687f21aa0a

§4 Java类继承实验

§4.1实验目的、内容及性质

1.熟悉Java类的继承机制;

2.掌握Java类中成员变量和方法的访问控制; 3.熟悉方法或构造方法多态性; 实验性质:验证、必做 实验学时:2学时 §4.2问题及思考

1、为什么需要继承? 子类从父类继承了什么成员?

2.、如子类实例化,继承后的构造函数如何调用?为什么这样? 3、Java类继承本质? §4.3实验指导

1、继承 1)、继承语法

class 子类名 extends 父类{ .... }

注意:一般称子类或派生类,父类也称为基类或超类。子类从父类继承了public以及protected成员(属性和函数),父类成员被继承到子类访问属性不改变. 在Java中,任何一个类都是Object类的子类

2)、继承下构造函数

当子类实例化,首先调用父类构造函数,其次调用子类本身构造函数 public Person(int z){ this.z=z; }

子类构造函数通过super()传实际参数给父类构造函数 public Student(int z){

super(z);//super()放在子类构造函数第一句可执行语句 .... }

3)、函数重载:在一个类中,函数名称相同,但是形式参数的个数或形参类型不同,这样一组构成函数重载.

public class Shape{

public double area(double r){

return Math.PI*r*r; }

public double area(double w,double h){ return w*h; }

public double area(double a,double b,double c){ double s=(a+b+c)/2;

return Math.Sqrt(s*(s-a)*(s-b)*(s-c)); } }

4)、覆盖问题override 子类重写了一个从父类继承过来的函数与属性。重写函数访问属性不低于继承函数 注意:

public void show(){ super.show();//调用父类中的同名函数 … }

5)、以下是示例,请仔细研究 import java.util.*; class Employee{ private String name; private double salary; public Employee(){ } public Employee(String n, double s){ name = n; salary = s; } public String getName(){ return name; } public double getSalary() { return salary; } public void raiseSalary(double byPercent) { double raise = salary * byPercent / 100; salary += raise; } } class Manager extends Employee{ private double bonus; public Manager(){ super(); this.bonus = bonus; } public Manager(String n, double s){ super(n, s); this.bonus = 0; } public double getSalary(){ double baseSalary = super.getSalary(); return baseSalary + bonus; } public void setBonus(double b){ bonus = b; } } public class ManagerTest{ public static void main(String[] args){ // 创建一个新的经理并设置他的奖金 Manager boss = new Manager(\陈鹏\ boss.setBonus(5000); Employee[] staff = new Employee[3]; // 建立员工数组和经理一起填充 staff[0] = boss; staff[1] = new Employee(\何恒\ staff[2] = new Employee(\童同\ // print out information about all Employee objects for (int i = 0; i < staff.length; i++){ Employee e = staff[i]; System.out.println(\ } } } §4.4实践编程

1、理解、回答并整理以下问题(非常重要)

1)、为什么需要继承? 子类从父类继承了什么成员? 有效地实现代码的复用性。public、protected成员。

2)、如子类实例化,父类是否需要实例化?如果需要实例化,则子类实例化时,父类以及子类实例化

顺序如何?

需要,先父类再子类。

3)继承后的子类构造函数如何定义以及传参数给父类的构造函数?父类与子类构造函数调用顺序如何?为什么这样?

通过super关键词。先父类再子类。子类是继承父类的。

4)、Java类继承本质?子类从父类继承成员函数、成员变量是否会另外创建副本? 子类实例化,系统自动创建一个父类实例化;不会。 2、实现一个名为Person的类和它的子类Employee 具体要求如下:

(1)Person类中的属性有:姓名name(String类型),地址address(String类型),电话号码telphone(String类型);

(2)Employee类中的属性有:办公室office(String类型),工资wage(double类型) (3)编写这两个类,及相应的测试代码。各个属性赋值在构造函数中完成。 package Ex4_1;

public class Person { private String pname; private String paddress; private String ptel;

public Person(String pname,String paddress,String ptel){ this.pname=pname;

this.paddress=paddress; this.ptel=ptel; }

public Person(){ }

public String getPname(){ return pname; }

public void setPname(String pname){ this.pname = pname; }

public String getPaddress(){ return paddress; }

public void setPaddress(String paddress){ this.paddress = paddress; }

public String getPtel(){ return ptel;