当前位置:文档之家› 实验4 继承与接口(一)

实验4 继承与接口(一)

实验4   继承与接口(一)
实验4   继承与接口(一)

实验4、继承与接口(一)

一、实验目的

1.子类的继承性

2.子类对象的创建过程

3.成员变量的继承与隐藏

4.方法的继承与重写

5.掌握继承实现的各种限制。

6.掌握子类对象的实例化过程。

7.掌握方法重写的概念及实现。

8.了解Object及对Object类的主要方法进行重写。

二、实验内容及步骤

1.理解继承的含义

任务一:学习继承实例

(1)内容及步骤

步骤一:创建一个基本的学生类,源代码如下。

public class Student

{

protected String name; //具有保护修饰符的成员变量protected int id;

void setdata(String name,int id) //设置数据的方法

{

https://www.doczj.com/doc/5e7106017.html, =name;

this.id= id;

}

public void print() //输出数据的方法

{

System.out.println("name="+name+ " ,"+ " id="+id);}

}

步骤二:编译Student.java,产生类文件Student.class。

步骤三:创建继承的类

通过Student 类产生子类ColStu,其不仅具有父类的成员变量,还定义了新成员变量xy(学院)、xi(系)。在程序中调用了父类的print 方法,同时可以看出子类也具有该方法。源代码如下:

class ColStu extends Student

{

protected String xy;

protected String xi;

public static void main(String args[])

{

Student p1 = new Student();

p1.setdata("帅零",12321) ;

p1.print();

ColStu s1 = new ColStu() ;

s1.setdata("郭丽娜",12345); //调用父类的成员方法

s1.xy="经济管理学院"; //访问本类的成员变量

s1.xi="信息管理系"; //访问本类的成员变量

s1.print();

System.out.println("name="+https://www.doczj.com/doc/5e7106017.html,+","

+"xy="+s1.xy+","+"xi="+s1.xi);

}

}

步骤四:编译并运行程序。

注意:公共类Student 与ColStu类要在同一文件夹(包)内。

(1)实验报告

将运行结果写在实验报告中。

思考:如果子类与父类不在同一包中子类会继承父类哪些变量和方法?

任务二:根据父类及以下描述编写子类。

在Vehicle类的基础上创建一个Tractor(拖拉机)类,它不但拥有journey,wheelNum,loadNum,driveSpeed 四种属性和driveAt()方法,而且还拥有自己的plough(耕地)方法,在该方法中要求能够显示journey,wheelNum,loadNum三个属性的值,在应用程序中分别使用Tractor类的对象调用plough()和driveAt方法。

public class Vehicle{

public float journey;

public int wheelNum;

public int loadNum;

public int driveSpeed;

public Vehicle(){

journey=100.3f;

wheelNum=4;

loadNum=1;

}

public void driveAt(int speed){

if (speed>=60){

System.out.println("行车速度太快,容易造成事故");

//如果要求的车速太快,则机动车自动以40单位速度行驶

driveSpeed=40;

}

else {

System.out.println("你在安全行驶速度内行驶");

driveSpeed=speed;

}

}

}

2、成员变量的隐藏和成员方法的覆盖

任务一:学习实例变量的隐藏和方法的覆盖

(1)内容及步骤

步骤一:创建父类

class A{

int i,j;

void setIJ(int a,int b)

{

i=a;

j=b;

}

int multiply()

{

return i*j;

}

}

步骤二:创建子类B

class B extends A

{

int i,k; //声明了一个和父类同名的变量i,隐藏了父类的i

B(int a,int b)

{

i=a;

k=b;

}

int multiply()/** 重写了父类的multiply()方法*/ {

return i*j*k;

}

}

步骤三:创建并运行应用程序。

public class LX

{

public static void main(String a[])

{

B subO=new B(6,9);

subO.setIJ(7,8);

int m=subO.multiply();

System.out.println("m = "+m);

}

}

步骤四:编译运行程序。

(2)实验报告

将运行结果写在实验报告中。

思考:但通过子类对象subO调用setIJ的方法时,为变量i和j赋值时,i 与j分别是属于谁的?父类?子类?分析获得此运行结果的原因。

任务二:分析结果并验证

(1)在以下程序中出现了成员隐藏,试分析程序运行的结果。

(2)编译运行下面程序,验证分析的结果,掌握成员隐藏时属性的变化规则。

class Father{

int a=100;

public void miner(){

a--;

}

}

public class Son extends Father {

int a=0;

public int getA(){

return super.a;

}

public static void main(String[] arg){

Father father=new Father();

Son son=new Son();

System.out.println("a of son is :" +son.a);

System.out.println("a of son's super is :" +son.getA());

son.miner();

System.out.println("a of son is :"+son.a);

System.out.println("a of son's super is :" +son.getA());

}

}

(3)实验报告

将运行结果写在实验报告中。

3、观察子类对象的实例化过程

任务一:分析应用程序的运行结果,并上机验证。

(1)源代码:

class Person{

private String name;

private int age;

public Person(){

System.out.println(“父类Person中的构造方法。”); }

public String getName(){

return name;

public void setAge(int age){

this. age = age;

}

public int getAge(){

return age;

}

public void setName(String name){

https://www.doczj.com/doc/5e7106017.html, = name;

}

}

class Student extends Person{

private String school;

public Student(){

System.out.println(“子类Student中的构造方法。”);

}

public String getSchool(){

return school;

}

public void setSchool(String school){

this.school = school;

}

}

public class InstanceDemo{

public static void main(String args[]){

Student stu = new Student();

stu.setName(“张三”);

stu.setAge(30);

stu.setSchool(“清华大学”);

System.out.println(“姓名:”+stu.getName()+”,年龄:”+stu.getAge() +”,学校:”+stu.getSchool());

}

}

(2)实验报告

将运行结果写在实验报告中,并解释获得此结果的原因。

4、方法的重写

任务一:编译Student类,查看结果。

(1)源代码如下:

class Person{

public void print(){

System.out.println(“Person---→void print(){}”);

}

}

class Student extends Person{

void print(){

System.out.println(“Student--→void print(){}”);

}

}

(2)实验报告

将Student类编译后提示怎样的信息?分析为什么会有这样的信息。

4、Object类

任务一:toString方法的理解。

(1) 观察程序输出结果。

源代码:

class Demo{

}

public class ObjectDemo1{

public static void main(String args[]){

Demo d = new Demo();

System.out.println(“不加toString()输出:”+d);

System.out.println(“加toString()输出:”+d.toSting());

}

}

(2)编译运行程序,观察结果。

(3)实验报告

将运行结果写在实验报告中。

思考:为什么两次输出都是同样结果。

Demo有父类吗?

任务二:根据对Object类的方法的学习及上例的理解,完成以下代码。

(1)源代码:

class Person(){

private String name;

private int age;

public Person(String name,int age){

https://www.doczj.com/doc/5e7106017.html, = name;

this.age = age;

}

【代码1】//toString方法重写,返回姓名和年龄信息。

}

(2)根据运行结果使用Person类编写应用程序。

程序运行结果:

对象信息:姓名:李星华;年龄:30

(3)实验报告

将代码1写在实验报告中。

java继承与接口实验三

信息与计算科学专业实验报告 课程名称Java课程设计总实验学时: 16 第3 次共6 次 实验项目名称继承与接口本次实验学时数: 3 实验类 型 验证 日期20 12 年 3 月6 日星期二年级 学生姓名学号课任教师 1.实验目的 巩固如下概念:子类的继承性、子类对象的创建过程、成员变量的继承与隐藏、方法的继承与重写;掌握上转型对象的使用;掌握接口回调技术。 2.实验要求 实验前,应事先熟悉相关知识点,拟出相应的实验操作步骤,明确实验目的和要求;实验过程中,服从实验指导教师安排,遵守实验室的各项规章制度,爱护实验仪器设备;实验操作完成后,认真书写实验报告,总结实验经验,分析实验过程中出现的问题。 3.实验内容 1、继承 编写一个Java应用程序,除主类外,该程序中还有4个类:People、ChinaPeople、AmericanPeople和BeijingPeople类。要求如下:People类有访问权限是protected的double 型成员变量:height和weight,以及public void speakHello()、public void averageHeight()、public void averageWeight()方法;ChinaPeople类是People的子类,新增了public void chinaGongfu()方法。要求ChinaPeople重写父类的public void speakHello()、public void averageHeight()、public void averageWeight()方法;AmericanPeople类是People的子类,新增public void americanBoxing()方法。要求AmericanPeople重写父类的public void speakHello()、public void averageHeight()、public void averageWeight()方法;BeijingPeople类是ChinaPeople的子类,新增public void beijingOpera()方法。要求BeijingPeople重写父类的public void speakHello()、public void averageHeight()、public void averageWeight()方法;请按模板要求,将【代码】替换为Java程序代码。 2、上转型对象 编写一个Java应用程序,要求有一个abstract类,类名为Employee。Employee的子类有YearWorker、MonthWorker和WeekWorker。YearWorker对象按年领取薪水,MonthWorker按月领取薪水,WeekWorker按周领取薪水。Employee类有一个abstract方法:public abstract double earnings(); 子类必须重写父类的earnings()方法,给出各自领取报酬的具体方式。有一个

继承和派生实验报告

实验目的与要求: 1.掌握类的继承与派生关系以及实验方法,理解类的层次结构。 2.掌握派生类构造函数初始化基类成员和对象成员的方法。 3.掌握内联函数和默认函数。 4.掌握赋值兼容原则,掌握派生类的复制构造函数和赋值运算符的定义。 实验过程及内容: 1.实践教程实验二十二P81范例:定义一个继承与派生关系的类体系,在 派生类中访问基类成员。 ①先定义一个点类,包含x,y坐标数据成员,显示函数和计算面积的函数成员; ②以点为基类派生一个圆类,增加表示半径的数据成员,重载显示和计算面积的函数; ③定义一个线段类,以两个点类对象作数据成员,定义显示、求面积及长度函数,线段类采用聚合方式,因为有两个端点,不能用派生。 编程测试所定义的类体系。 本实验教程中有源码,请自行运行,体会和熟悉继承与派生的基本概念及实现方法,掌握派生类构造函数初始化基类成员和对象成员的方法等。2. 实践教程P83编程:多层派生练习,由上题Point类和Circle类继续派生出Cylinder类。要求计算圆柱的底面积、侧面积、全面积和体积。 请编写所有完整的成员函数,并编写主函数进行验证。 数据处理 1. (1)

(2)j结果报错,原因是派生类中的成员函数不能访问基类中的私有成员。(3)在Line类中添加两个数据成员。

2. #include #include using namespace std; #define PI 3.14159 class Point{ friend class Line; protected: double x, y ; public: Point(){x = 0 ; y = 0 ; } Point(double xv,double yv){ x = xv; y = yv; } double Area(){return 0;} void Show() { cout<<"x="<

面向对象--类继承与接口实验报告

实验十类继承与接口(二) 课程名称:面向对象程序设计 实验项目名称:实验十类继承与接口(二) 学生姓名:专业:学号: 实验地点:实验日期:年月 【实验目的】 1.掌握Java类的继承特点,包括子类声明、对象创建 2. 掌握域的继承与隐藏的特点和用法 3. 掌握方法的继承与重写的特点和用法 【实验内容】 一. 改错题 检查下面代码是否有错,如果有错,写明错误原因,并修正错误。 (1) class Aaa{ int i; Aaa(){i=-1; } Aaa(int a){ i = a;} Aaa(double d){Aaa((int)d);} } 是否出错:是 出错原因(如果出错):构造器调用构造器不能直接用名 class Aaa{ int i; Aaa(){i=-1; } Aaa(int a){ i = a;} Aaa(double d){this((int)d);} }

(2) class Aaa{ int i; Aaa(){i=-1; } Aaa(int a){ i = a;} Aaa(double a){int b=(int)a;this(b);} } 是否出错:是 出错原因(如果出错):this放第一行 class Aaa{ int i; Aaa(){i=-1; } Aaa(int a){ i = a;} Aaa(double a){this((int)a);} } (3) class Aaa{ int i; Aaa(int a){ i = a;} } class Bbb extends Aaa{ Bbb(){ } } 是否出错:是 出错原因(如果出错):父类没有无参构造,子类中药通过super调用父类构造class Aaa{ int i; Aaa(int a){ i = a;} } class Bbb extends Aaa{ Bbb(int a) { super(a); } } (4) class Aaa{ private int i;

实验四 继承与派生讲解学习

实验四继承与派生

实验四派生类与继承 【实验类型】验证性实验【实验课时】2学时 【实验目的】 (1)理解类的继承的概念,能够定义和使用类的继承关系。 (2)掌握派生类的声明与定义方法。 (3)熟悉公有派生和私有派生的访问特性。 (4)学习虚基类在解决二义性问题中的作用。 【实验环境】 硬件:计算机 软件:Microsoft Visual C++ 6.0 【实验内容】 1、按要求阅读、编写、调试和运行以下程序。 (1)实验内容 ①定义一个基类MyArray,基类中可以存放一组整数。 class MyArray {public: MyArray(int leng); ~MyArray(); void Input(); void Display(); protected: long int *alist; // 指向动态申请的一组空间 int length;}; // 整数的个数 基类中有构造函数、析构函数、输入数据和输出数据的函数。 ②定义一个类SortArray继承自MyArray ,在该类中定义函数实现排序功能。

③定义一个类ReArray继承自MyArray ,在该类中定义函数实现逆转功能。 ④定义一个类AverArray继承自MyArray ,在该类中定义函数Aver求解整数的平均值。 ⑤定义NewArray类,同时继承了SortArray, ReArray和AverArray,使得NewArray类的对象同时具有排序、逆转、和求平均值的功能。在继承的过程中声明为虚基类,体会虚基类在解决二义性问题中的作用。 (2)实验程序 (参考) 程序如下: #include "iostream.h" #include "process.h" class MyArray {public: MyArray(int leng); ~MyArray(); void Input(); void Display(); protected: long int *alist; // 指向动态申请的一组空间 int length; // 整数的个数 }; MyArray::MyArray(int leng) { length=leng; alist=new long int[length]; if(alist==NULL) { cout<<"对不起,创建失败。请重试。 ";exit(1); } } MyArray::~MyArray() {

C++语言程序设计实验答案_继承与派生教学提纲

C++语言程序设计实验答案_继承与派生

实验07 继承与派生(4学时) (第7章继承与派生) 一、实验目的 二、实验任务 7_1 声明一个基类Animal。 有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(int n)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程试试看。 7_2 声明一个基类BaseClass。 有整型成员变量Number,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况。 7_3 声明一个车(vehicle)基类。 具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数(SeatNum)等属性。从bicycle和motorcar派生出摩托车(motorcycle)类,在继承过程中,注意把vehicle设置为虚基类。如果不把vehicle设置为虚基类,会有什么问题?编程试试看。

7_4 以实验6中的People(人员)类为基类。 派生出student(学生)类,添加属性:班号char classNo[7]; 派生出teacher(教师)类,添加属性:职务char principalship[11]、部门char department[21]。 从student类中派生出graduate(研究生)类,添加属性:专业char subject[21]、导师teacher adviser; 从graduate类和teacher类派生出TA(助教生)类,注意虚基类的使用。重载相应的成员函数,测试这些类。 类之间的关系如图7-1所示。 图7-1 类图

实验11-类继承与接口(三)实验报告

浙江大学城市学院实验报告 课程名称:面向对象程序设计 实验项目名称:类继承与接口(三) 学生姓名专业:学号: 实验地点:实验日期:年月日 【实验目的】 1.巩固Java类继承的相关知识 2.理解对象上转型技术的优点和用途。 3.掌握接口的特点 4.接口与抽象类的异同之处 【实验内容】 一、类继承相关知识强化 1. 执行以下程序,给出执行Bbb的结果,并说明指出类Bbb的this.i与super.i的含义(即它们都对应哪个变量)。 class Aaa{ int i; Aaa(int a){ i = a;} } class Bbb extends Aaa{ int j,k; Bbb(int i){ super(i); j = this.i; k = super.i; } public static void main(String[] args){ Bbb b = new Bbb(18); System.out.println(b.j +"\t" + b.k); } } 执行Bbb的结果:

this.i与super.i的含义(即它们都对应哪个类中定义的变量): 都对应Aaa类中的变量。 2.接着上面例子,将类Bbb改写为以下代码,请写出程序运行结果,并说明这个例子与上面例子的区别。 class Bbb extends Aaa{ int i= -1,j= -1,k= -1; //比上面例子增加一个实例变量i; Bbb(int i){ super(i); j = this.i; //本语句含义是:Bbb类中的变量i的值赋给j k = super.i; //本语句含义是:访问Aaa类中的变量i并将值赋给k } public static void main(String[] args){ Bbb b = new Bbb(18); System.out.println(b.j +"\t" + b.k); } } 执行Bbb的结果: -1 18 这个例子与上面例子的区别: 在Bbb类中也定义了变量i,将Bbb的直接超类Aaa中的变量i给覆盖掉了。 3.对以下程序,给出执行Bbb的结果,并分析Bbb中main方法中a.show(1), b.show(1), c.show(1)的结果。 class Aaa{ void show(){ System.out.println("Aaa中定义的show()"); } void show(int i){ System.out.println("Aaa中定义的show(int i)"); } } class Bbb extends Aaa{ void show(){ System.out.println("Bbb中定义的show()"); }

实验六继承与派生

继承与组合 一、实验目的 1.了解继承在面向对象程序设计中的重要作用。 2.进一步理解继承与派生的概念。 3.掌握通过继承派生出一个新的类的方法。 4.了解虚基类的作用和用法。 5.掌握类的组合 二、实验内容 1.请先阅读下面的程序,写出程序运行的结果,然后再上机运行程序,验证自己分析的结果是否正确。 (1) #include using namespace std; class A {public: A(){cout<<"A::A() called.\n";} virtual ~A(){cout<<"A::~A() called.\n";} }; class B:public A {public: B(int i) { cout<<"B::B() called.\n";

buf=new char[i]; } virtual ~B() { delete []buf; cout<<"B::~B() called.\n"; } private: char *buf; }; void fun(A *a) { cout<<"May you succeed!"<

A::A() called. B::B() called. May you succeed! B::~B() called. A::~A() called. (2) #include using namespace std; class A{ public: A(int a,int b):x(a),y(b){ cout<<"A constructor..."<

Java继承与多态实验报告

西安邮电大学 (计算机学院) 课内实验报告 实验名称:继承与多态 专业名称:计算机科学与技术 班级:计科1405班 学生姓名:高宏伟 学号:04141152 指导教师:刘霞林 实验日期:2016.10.13

一、实验目的 通过编程和上机实验理解Java 语言的继承和多态特性,掌握变量的隐藏、方法的覆盖、重载,掌握抽象类和接口的使用。 二、实验要求 1.编写体现类的继承性(成员变量、成员方法、成员变量隐藏)的程序。 2.编写体现类的多态性(成员方法重载)的程序。 3.编写体现类的多态性(构造方法重载)的程序。 4.编写使用接口的程序。 三、实验内容 (一)类的继承 1.创建公共类Student. (1)编写程序文件Student.java,源代码如下: public class Student { protected String name; //具有保护修饰符的成员变量 protected int number; void setData(String m,int h) //设置数据的方法 { name =m; number= h; } public void print() //输出数据的方法 { System.out.println(name+", "+number); } } (2)编译Student.java,产生类文件Student.class。 2.创建继承的类Undergraduate

(1)程序功能:通过Student 类产生子类undergraduate,其不仅具有父类的成员变量name()、number(学号),还定义了新成员变量academy(学院)、department (系)。在程序中调用父类的print 方法。 (2)编写Undergraduate 程序: class Undergraduate extends Student { 【代码1】//定义成员变量academy 【代码2】//定义成员变量department public static void main(String args[]) { 【代码3】//创建一个学生对象s 【代码4】//用父类的setData方法初始化对象s 【代码5】//对象s调用print方法 【代码6】//创建一个大学生对象u 【代码7】//调用父类的成员方法setData初始化对象u 【代码8】//设置对象u的成员变量academy 【代码9】//设置对象u的成员变量department System.out.print(https://www.doczj.com/doc/5e7106017.html,+", "+u.number+", "+u.academy+", "+u.department); } } (3)编译并运行程序 注意:公共类Student 与undergraduate 类要在同一文件夹(路径)。 (二)方法的重载 (1)程序功能:对不同的数进行排序输出。在IntSort 类中定义3 个同名的方法sort。 (2)编写Sort.java 文件,源代码如下。 import java.awt.Graphics; import java.applet.Applet; class IntSort { public String sort(int a, int b) { if (a>b) return a+""+b; else return b+""+a; } public String sort(int a, int b, int c) { int swap; if (a

Java 接口与类之间继承例题

1,定义一个接口Assaultable(可攻击的),该接口有一个抽象方法attack()。 2,定义一个接口Mobile(可移动的),该接口有一个抽象方法move()。 3,定义一个抽象类Weapon,实现Assaultable接口和Mobile接口,但并没有给出具体的 实现方法。 4,定义3个类:Tank,Flighter,WarShip都继承自Weapon,分别用不同的方式实现Weapon 类中的抽象方法。 5,写一个类Army,代表一支军队,这个类有一个属性是Weapon数组w(用来存储该军队所拥有的所有武器);该类还提供一个构造方法,在构造方法里通过传一个int类型的参数来限定该类所能拥有的最大武器数量,并用这一大小来初始化数组w。该类还提供一个方法addWeapon(Weapon wa),表示把参数wa所代表的武器加入到数组w中。在这个类中还定义两个方法attackAll()和moveAll(),让w数组中的所有武器攻击和移动。 6,写一个主方法去测试以上程序。 interface Assaultable{//可攻击的 void attack(); } interface Mobile{//可移动的 void move(); } abstractclass Weapon implements Assaultable,Mobile { publicvoid attack(){} publicvoid move(){} } class Tank extends Weapon{ publicvoid attack(){ System.out.println("坦克攻击!!!"); } publicvoid move(){ System.out.println("坦克移动!!!"); } } class Flighter extends Weapon{ publicvoid attack(){ System.out.println("战斗机攻击!!!"); } publicvoid move(){ System.out.println("战斗机移动!!!");

实验四:派生类和继承(一)

福建农林大学金山学院实验报告 系(教研室):信息与机电工程系专业:计算机科学与技术年级: 实验课程:面向对象程序设计姓名:学号:  实验室号 计算机号 实验时间:指导教师签字:成绩: 实验4 派生类和继承(一) 一、实验目的和要求 (1)掌握派生类的声明与定义方法,进一步理解类的继承的概念,能够定义和使用类的继承关系。 (2)熟悉公有派生和私有派生的访问特性。 二、实验内容和原理 1、程序分析题(写出程序的输出结果,并分析结果)。

2、(1)定义一个基类animal,该类具有私有整型成员变量age,weight,构造派生类dog公有继承animal,dog类新增私有成员变量color,新增成员函数SetAge(int n)中直接给age赋值,新增成员函数SetWeight(int m)中直接给weight赋值,查看编译结果,并分析结果。(2)将类animal中的age和weight为公有成员,重做第一步,并分析结果。(3)将类animal中的age和weight为保护成员,重做第一步,并分析结果。(4)将派生类dog的继承方式改为私有继承方式和保护继承方式重做以上各小题,并分析结果。 三、实验环境 1. 硬件:PC机; 2. 软件:Windows操作系统、Visual C++ 6.0 四、算法描述及实验步骤 2.1 #include class animal {private:int age,weight;}; class dog:public animal

{private:char color[10]; public: int SetAge(int n) {age=n;return n;} int SetWeight (int m) {weight=m;return m; } }; int main() { int x,y; dog a; cout<<"请输入这条狗的岁数="; cin>>x;cout< class animal {public:int age,weight;}; class dog:public animal {private:char color[10]; public: int SetAge(int n) {age=n;return n;} int SetWeight (int m)

实验二 继承与接口实验

实验二继承与接口 一、实验目的 1.掌握类的继承机制。 2.熟悉类中成员变量和方法的访问控制。 3.掌握接口与包的使用,熟悉方法的多态性。 二、实验内容 1.定义父类及子类,在子类中重写父类的方法 2.练习接口与包的使用 三、.实验步骤与要求 第1题继承 编写一个Java应用程序,除了主类外,该程序中还有4个类:People, ChinaPeople, AmericanPeople 和BeijingPeople类。此四个类的继承关系如下图所示: 要求ChinaPeople,American类均重写其父类People类的speakHello, averageHeight, averageWeight方法,BeijingPeople类重写其父类ChinaPeople类的speakHello, averageHeight, averageWeight方法。 源代码: package people; class people { protected double height ; protected double weight ;

public void speakHello() //问候语的函数 { System.out.println("hello"); } public void averageHeight()//人们的平均身高{ height=170; System.out.println(+height); } public void averageWeight()//人们的平均体重{ weight=120; System.out.println(+weight); } } class Chinapeople extends people { public void speakHello() { System.out.println("你好"); } public void averageHeight() { height=172; System.out.println(+height); } public void averageWeight() { weight=115; System.out.println(+weight); } public void chinaGongfu()//中国功夫的方法 { System.out.println("中国功夫"); } } class Americanpeople extends people { public void speakHello() { System.out.println("hello"); } public void averageHeight()

java继承与接口 实验报告

应用数学学院信息与计算科学专业 2 班学号3111008162 姓名许庆平教师评定_________________ 实验题目继承与接口 一、实验目的与要求 实验目的: 1、掌握类的继承关系。 2、掌握接口的定义与使用。 实验要求: 按下列要求编写Java程序: 1、定义接口Printx,其中包括一个方法printMyWay(),这个方法没有形参,返回值为空。 2、编写矩形类,矩形类要求实现Printx接口,有求面积、求周长的方法,printMyWay()方法要能显示矩形的边长、面积和周长。 3、编写正方形类作为矩形类的子类,正方形类继承了矩形类求面积和周长的方法,新增加求对角线长的方法,重写printMyWay()方法,要求该方法能显示正方形的边长、面积、周长和对角线长。 二、实验方案 先按要求定义接口Printx,再创建一个矩形类Rectangle,有成员变量length 和width,area()求面积,circle()求周长,用PrintMyWay()显示。 然后定义正方形类,继承Rectangle类,定义求对角线长的函数duijiaoxian()。面积和周长用父类中的area()和circle()实现。用PrintMyWay()显示。最后在主类中实现这两个类。 三、代码如下 interface Printx

{ void PrintMyWay();} class Rectangle implements Printx { int length,width; Rectangle(int x,int y){ length=x; width=y; } int area(){ return length*width; } int circle(){ return 2*(length+width); } public void PrintMyWay(){ System.out.println("矩形的长为:"+length); System.out.println("矩形的宽为:"+width); System.out.println("矩形的面积为:"+area()); System.out.println("矩形的周长为:"+circle()); }

类的继承与派生综合题

1. 类的继承与派生综合题1 题目描述 定义Staff(员工)类,由Staff分别派生出Saleman(销售员)类和Manager(经理)类,再由Saleman(销售员)类和Manager(经理)类采用多重继承方式派生出新类SaleManager(销售经理)类。 要求: a.在Staff类中包含的数据成员有编号(num)、姓名(name)、出勤率(rateOfAttend)、基本工资(basicSal)和奖金(prize)。在Saleman类中还包含数据成员:销售员提成比例(deductRate)和个人销售额(personAmount),在Manager类中还包含数据成员:经理提成比例(totalDeductRate)和总销售额(totalAmount)。在SaleManager类中不包含其他数据成员。 b.各类人员的实发工资公式如下: 员工实发工资=基本工资+奖金*出勤率 销售员实发工资=基本工资+奖金*出勤率+个人销售额*销售员提成比例 经理实发工资=基本工资+奖金*出勤率+总销售额*经理提成比例 销售经理实发工资=基本工资+奖金*出勤率+个人销售额*销售员提成比例+总销售额*经理提成比例 c.每个类都有构造函数、输出基本信息函数(Output)和输出实发工资函数(OutputWage)。 主函数如下: int main() { Salemanobjsale(101101, "LD", 0.88f, 1200, 800, 0.05f, 10000); Manager objmana(101102, "NXG", 0.90f, 2500, 1000, 0.10f, 20000); SaleManagerobjsalemana(101103, "HDY", 0.99f, 3500, 2000, 0.20f, 100000, 0.20f,150000); objsale.Output(); cout<< "销售员的实发工资:" << " "; cout<

实验6继承与接口

山西大学计算机与信息技术学院 实验报告 姓名学号专业班级 课程名称 Java实验实验日期成绩指导教师批改日期实验名称实验 6 继承与接口 [实验目的] 1、掌握java 继承中父类及其子类的定义方法。 2、掌握子类重写父类同名方法的方法。 3、掌握接口的用法。 (1) 学习如何定义接口 ; (2) 掌握接口的实现方式 ; (3) 使用实现了接口的类 ; (4) 理解接口与抽象类的区别。 [实验要求] 1、复习理论教学中所学的内容。 2、认真进行实验预习,查阅参考书,书写源程序,书写实验预习报告。 3、认真总结实验并书写实验报告。 [实验内容] 1、类的继承性练习 (1) 程序源代码如下。 public class Student{ protected String xm; //姓名,具有保护修饰符的成员变量 protected int xh;//学号 void setdata(String xm,int xh){ //设置数据的方法 this.xm=xm; this.xh=xh; } public void print(){ //输出数据的方法 System.out.println(xm+", "+xh); } } class TestStudent{//测试类 public static void main(String[] args) { Student s = new Student(); s.setdata("小红", 2010242555); s.print(); }

} (2) 编译源并运行程序。贴图如下 图一 (二)创建将被继承的类 (1) 程序功能:通过Student类产生子类CollegeStudent,其不仅具有父类的成员变量xm(姓名)、xh(学号),还定义了新成员变量xy(学院)、bj(bj)。在程序中调用了父类的print 方法,同时可以看出子类也具有该方法。 程序代码: public class CollegeStudent extends Student{ protected String xy; protected int bj; void setdata(String xm,int xh,String xy,int bj){ super.setdata(xm, xh); this.xy = xy; this.bj = bj; } public void print() { super.print(); System.out.print("学院:"+xy+"班级:"+bj); } } class TestCollegeStudent{ public static void main(String[] args) { CollegeStudent cs = new CollegeStudent(); cs.setdata("小蓝", 2010242555, "计算机学院", 1); cs.print(); } } 运行结果贴图:

类的封装与继承习题(题)

1.以下关于继承的叙述正确的是( C )。 A、在Java中类只允许单一继承 B、在Java中一个类只能实现一个接口 C、在Java中一个类不能同时继承一个类和实现一个接口 D、在Java中接口只允许单一继承 2.有继承关系时用到的关键字是(A )。( 2 分) A:extend B:extends C:implements D:implement 3:Java变量中,以下不属于复合类型的数据类型是( D)。( 2 分) A:类 B:字符型 C:数组型 D:接口 4:java中定义数组名为abc,下面(B )可以得到数组元素的个数。( 2 分) A:abc.length( ) B:abc.length C:len(abc) D:ubound(abc) 5:下列说法正确的是(A )。( 2 分) A:编译后的Java源程序根据文件中定义的类和接口的个数产生相应个数的.class 字节码文件。 B:Java语言的源文件中不是任何地方都可以加注释的。 C:一个文件中可以有多个访问权限为public的类。 D:含有main()方法的类可以为public的类,也可以为其他类。 6:在调用构造函数时(C )( 2 分) A:子类可以不加定义就使用父类的所有构造函数 B:不管类中是否定义了何种构造函数,创建对象时都可以使用默认构造函数C:先调用父类的构造函数 D:先调用形参多的构造函数 7:Java与C/C++比较说法错误的是(D)。( 2 分) A:Java不提供goto语句,所以也就没指定goto作为关键字。

B:Java没有指针。 C:Java没有联合和结构 D:Java只有单继承没有多重继承。 8:若需要定义一个类域或类方法,应使用( B)修饰符。( 2 分) A:static B:package C:private D:public 9:下列说法( C)是正确的。( 2 分) A:程序执行到break语句是一定会结束所有的循环 B:程序执行到continue语句时会结束当前循环 C:break语句和continue语句都可以和标签协同使用 D:continue语句和break语句的作用相同 10:以下说法正确的是(D )。( 2 分) A:每个Java类都至少有一个构造方法,如果没有则机器自动生成一个默认的构造方法。 B:如果类里定义了一个或多个构造方法,那么java也提供默认的构造方法 C:每个Java类中用户必须定义至少一个构造方法。 D:以上都不对 11:对封装的理解正确的是(A )。( 3 分) A:封装就是把对象的属性和行为结合成一个独立的单位。 B:封装就是把对象完全隐蔽起来,不让外界访问。 C:封装性是一个使用问题。 D:封装和抽象是一回事。 12:对成员的访问控制保护最强的是(C )。( 3 分) A:public B:缺省 C:private D:protected

相关主题
文本预览
相关文档 最新文档