005-实验五 继承和接口(实验报告内容)

合集下载

实验报告5 继承与多态

实验报告5 继承与多态

实验名称:继承与多态一.实验目的:((1)理解继承的含义,掌握派生类的定义方法和实现;(2)理解虚函数在类的继承层次中的作用,虚函数的引入对程序运行时的影响,能够对使用虚函数的简单程序写出程序结果。

(3)编写体现类的继承性(成员变量,成员方法,成员变量隐藏)的程序;(4)编写体现类多态性(成员方法重载,构造方法重载)的程序。

(5)理解接口和抽象类、抽象方法的定义和实现方法;(5)理解接口和抽象类的差别。

二.上机内容:(1)进行类的继承和基类构造方法的应用的练习;(2)进行类的多态性练习(3)进行抽象类和接口的练习(4)整理上机步骤,总结经验和体会。

(5)完成实验报告。

三.上机步骤:类的继承和基类构造方法的应用(1)编写一个学生和教师数据输入和显示程序,学生数据有编号、姓名、班级和成绩,教师数据有编号、姓名、职称和部门。

要求将编号、姓名输入和显示设计成一个类person,并作为学生数据操作类student和教师类数据操作类teacher的基类。

using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication2{class person{public string bh;//编号public string xm;//姓名public person(string bh, string xm){this.bh = bh;this.xm = xm;}public void show(){Console.WriteLine("姓名:{0}", xm);Console.WriteLine("编号:{0}", bh);}}class student : person{public string bj;//班级public int cj;//成绩public student(string sbh, string sxm, string sbj, int scj): base(sbh, sxm){bh = sbh;xm = sxm;bj = sbj;cj = scj;}public new void show(){Console.WriteLine("***student***");Console.WriteLine("姓名:{0}", xm);Console.WriteLine("编号:{0}", bh);Console.WriteLine("班级:{0}", bj);Console.WriteLine("成绩:{0}", cj);}}class teacher : person{public string zc;//职称public string bm;//部门public teacher(string tbh, string txm, string tzc, string tbm) : base(tbh, txm){bh = tbh;xm = txm;zc = tzc;bm = tbm;}public new void show(){Console.WriteLine("***teacher***");Console.WriteLine("姓名:{0}", xm);Console.WriteLine("编号:{0}", bh);Console.WriteLine("职称:{0}", zc);Console.WriteLine("部门:{0}", bm);}}class program{static void Main(string[] args){student st = new student("050013", "张三", "信管091", 91);st.show();teacher te = new teacher("046950", "范仲淹", "特级教师", "教务处"); te.show();Console.ReadLine();}}}运行结果:(2)将以上程序尝试改成通过调用基类构造方法的方式来初始化编号和姓名,并总结调用基类构造方法的应用要点。

java实验报告——继承与接口

java实验报告——继承与接口

System.out.print('\t'+"平均分");
System.out.println('\t'+"成绩等级");
for(int i=0; i<pg.length;i++) {
System.out.print(pg[i].Name); System.out.print('\t'+pg[i].Stu_type); System.out.print('\t'+String.valueOf(pg[i].C_score)); System.out.print('\t'+String.valueOf(pg[i].English_score)); System.out.print('\t'+String.valueOf(pg[i].Java_score)); System.out.print('\t'+String.valueOf(pg[i].score)); System.out.println('\t'+pg[i].sco_Level); } System.out.println(); } }
String Name=""; String Stu_type=""; int C_score; int English_score; int Java_score; int score; // String sco_Level=""; Sco_Level sco_Level;
public Student(String name,String stu_type,int sco1,int sco2,int sco3) {

继承与接口实验

继承与接口实验
System.out.println("中国人的平均体重:67.34公斤");
}
public void chinaGongfu() {
System.out.println("坐如钟,站如松,睡如弓");
}
}
class AmericanPeople extends People {
public void speakHello(){
BeijingPeople是ChinaPelple的子类,新增public void beijingOpera()方法。要求ChinaPeople重写父类的public void speakHello()、public void averageHeight()和public void averageWeight()方法。
System.out.println("American Average weight: 80.23 kg");
}
public void americanBoxing() {
System.out.println("直拳钩拳");
}
}
class BeijingPeople extends ChinaPeople {
System.out.println("How do you do");
}
public void averageHeight(){
System.out.println("American Average height: 188.0 cm");
}
public void averageWeight(){
public void speakHello(){

java实验报告——继承与接口

java实验报告——继承与接口

南京理工大学泰州科技学院实验报告书课程名称:《Java 面向对象程序设计》实验题目:实验四继承与接口班级:09计算机(2)学号:0909030218姓名:尤源指导教师:李丛一、实验目的1.掌握Java语言的类的继承的概念。

2.掌握Java语言中抽象类的使用。

3.掌握Java语言中接口的使用4.掌握eclipse集成开发环境的使用。

二、实验内容1.类的继承,具体要求如下:(1)定义一Person类,该类具有属性人名、年龄、身份证号等信息以及将属性信息作为字符串返回的一方法;(2)定义一Student类,让该类继承Person类,该类除了具有属性人名、年龄、身份证号等信息以外还有学号,所在学校等信息;该类也具有将属性信息作为字符串返回的一方法;(3)编写测试类,测试这两个类2.定义一个动物抽象类Animal,该类有一个抽象的方法cry();定义一个小猫类Cat,该类继承了Animal类并实现了cry()方法,当调用cry()方法时打印“小猫喵喵叫”,定义一个小狗类Dog,该类也继承了Animal类并实现了cry()方法,当调用cry()方法时打印“小狗汪汪叫”。

3. 接口的运用。

定义一接口接口名叫Usb,该接口声明了两个方法分别为start()和stop()方法,定义一U 盘类UsbDiskWriter,一照相机类Camera、一手机类Mobile,让它们都实现该接口。

三、实验步骤实验(1)编写代码实验(2)编写代码实验(3)编写代码四、实验结果实验(1)运行结果实验(2)运行结果实验(3)运行结果五、结果分析1. 子类若想调用父类的构造函数必须要用super关键字。

2.接口体中只能运用抽象类。

3.在同一个java文件中只能在入口函数的类中用public。

实验5 继承、多态、接口和异常处理

实验5  继承、多态、接口和异常处理
}
public void setName(String name) { = name;
}
public void setType(String type) { this.type = type;
}
public void setCourseScore(int courseNumber, int courseScore) { 代码 3 this.courses[courseNumber] = courseScore; //按课程索引号设置
System.out.println("你想听什么? 请输入选择:0-收音机 1-随声听 2-手机"); i = scanner.nextInt( );
} }
//开始听声音 sportsman.listen(soundDevice[i]); soundDevice[i].increaseVolume( ); 代码 3 soundDevice[i].stopSound( );
本科生标准
80~100 70~80 60~70 50~60 50以下
优秀 良好 一般 及格 不及格
abstract class Student {
研究生标准 90~100 优秀 80~90 良好 70~80 一般 60~70 及格 60以下 不及格
final static int CourseNo = 3; String name; String type; int[] courses; String courseGrade;
public void increaseVolume( ) { System.out.println("增大收音机音量");
}
public void decreaseVolume( ) { System.out.println("减小收音机音量");

实验五 继承与派生实验报告

实验五 继承与派生实验报告

实验五继承与派生一、实验目的( 1 )熟练掌握类的继承,能够定义和使用类的继承关系。

( 2 )掌握派生类的声明与实现方法。

( 3 )掌握类构造函数的初始化列表与作用域分辨符的使用方法。

二、实验工具与准备工作在开始实验前,应回顾或复习相关内容。

需要一台主算机,其中安装有VisualC + + 6 .0 、VisualC + + 2005 、VisualC + + 2005 ExpreSS 、Dev 一C + +或MinGW Developer Studio 等集成开发环境软件。

三、实验内容完成设计性实验项目8.7 创建一个表示雇员信息的employee类,其中包含数据成员name、empNo和salary,分别表示雇员的姓名、编号和月薪。

再从employee类派生出3个类worker、technician和salesman,分别代表普通工人、科研人员、销售人员。

三个类中分别包含数据成员productNum、workHours和monthlysales,分别代表工人每月生产产品的数量、科研人员每月工作的时数和销售人员每月的销售额。

要求各类中都包含成员函数pay,用来计算雇员的月薪,并假定:普通工人的月薪=每月生产的产品数×每件产品的赢利×20%科研人员的月薪=每月的工作时数×每小时工作的酬金销售人员的月薪=月销售额×销售额提成。

#include<iostream>using namespace std;class employee{protected:char name[20];int empNo;float salary;public:employee(char *cp="李强",int no=1001);employee(employee&);void setname(char *cp);void setempNo(int no);void setsalary(float sa);char*getname();int getempNo();float getsalary();void display();employee compsalary(employee *emp);};employee::employee(char *cp,int no){int i=0;while(*cp){name[i]=*cp;i++;cp++;}name[i]='\0';empNo=no;}employee::employee(employee &em) {int i=0;while([i]){name[i]=[i];i++;}name[i]='\0';empNo=em.empNo;salary=em.salary;}void employee::setname(char *cp) {int i=0;while(*cp){name[i]=*cp;i++;cp++;}name[i]='\0';}void employee::setempNo(int no) {empNo=no;}void employee::setsalary(float sa) {salary=sa;}char*employee::getname(){return name;}int employee::getempNo(){return empNo;}float employee::getsalary(){return salary;}void employee::display(){cout<<"工号为"<<empNo<<"的雇员"<<name<<"的月薪为"<<salary<<endl; }employee employee::compsalary(employee *emp){if(this->salary>=emp->salary)return *this;elsereturn *emp;}class worker : public employee{public:worker(char*,int,int);void setproductNum(int n){ productNum=n;}int getproductNum(){ return productNum;}void pay();private:int productNum;static float proper; //每件产品的利润};float worker::proper=30; //假设每件产品的利润为30元worker::worker(char *name,int no,int pronum):employee(name,no){productNum=pronum;}void worker::pay(){salary=productNum*proper*0.2;}class technician : public employee{public:technician(char*,int,float);void sethours(float h){ workHours=h;}float gethours(){ return workHours;}void pay();private:float workHours;static float payperhour; //科研人员每小时工作的酬金};float technician::payperhour=50; //假设科研人员每小时工作的酬金为50元technician::technician(char *name,int no,float hours):employee(name,no){workHours=hours;}void technician::pay(){salary=workHours*payperhour;}class salesman : public employee{public:salesman(char*,int,float);void setmonthlysales(int num){ monthlysales=num;}int getmonthlysales(){ return monthlysales;}void pay();private:float monthlysales;static float percent; //销售人员的销售提成};float salesman::percent=0.6; //假设销售人员的销售提成为60% salesman::salesman(char *name,int n,float sn):employee(name,n){monthlysales=sn;}void salesman::pay(){salary=monthlysales*percent;}void main(){worker w1("王某",1001,1000);technician t1("李某",1002,200);salesman s1("许某",1003,10000);w1.pay();t1.pay();s1.pay();cout<<"工人"<<w1.getname()<<"的月薪为"<<w1.getsalary()<<"元\n";cout<<"科研人员"<<t1.getname()<<"的月薪为"<<t1.getsalary()<<"元\n";cout<<"销售人员"<<s1.getname()<<"的月薪为"<<s1.getsalary()<<"元\n";}8.8 创建一个automobile类表示汽车,其中包含数据成员brand和speed,分别表示汽车的品拍和行驶速度;成员函数run和stop表示行驶和停止。

实验五 继承与接口

实验五 继承与接口

实验五继承与接口1.实验目的1、掌握类的继承细节内容,包括子类的继承、子类对象创建、成员变量的继承与隐藏、方法的继承与重写2、掌握重写的目的以及怎样使用super关键字3、掌握上转型对象与接口回调技术4、掌握类怎样实现接口,及面向接口的编程思想2.实验内容1、参考实验指导书中P26-37页,完成下面实验:1)实验1中国人与美国人2)实验2银行与利息3)实验3面积之和4)实验4歌手大赛5)实验5天气预报2、完成习题:1)根据要求修改实验2,参照建设银行再编写一个商业银行(广发行),让程序输出8000元在广发行8年零212天的利息。

2)根据要求修改实验3,再增加一种几何图形(梯形),并让主类中的tuxing 的某些元素是梯形的上转型对象。

3)仿照实验5编写一个程序实现模拟水杯中的水在不同温度下可能出现的状态。

4)编写一个接口并创建两个实现该接口的类A、B。

A、B类实现了接口的f 方法,A类的f方法内容为计算1!+3!+5!……+9!并返回结果,B类的f方法内容为计算2!+4!+6!……+10!也返回结果;再编一个执行类,执行类运行时要求通过接口回调方式用同一个对象实例分别调用A类的f方法和B类的f 方法。

public class qiuhe{public static void main(String args[]){long sum=0;System.out.println("1!+3!+5!+7!+9!……+10!=");for(int i =1; i<=10 ; i+=2){sum = sum + method(i); //调用方法System.out.println(sum);}//使用递归方法static long method(int index){if(index==1)return 1;elsereturn index*method(index-1);}}public class qiuhe{public static void main(String args[]){long sum=0;System.out.println("1!+3!+5!+7!+9!……+10!=");for(int i =1; i<=10 ; i+=2){sum = sum + method(i); //调用方法System.out.println(sum);}//使用递归方法static long method(int index){if(index==1)return 1;elsereturn index*method(index-1);}}3.实验步骤参考实验指导书中P26-37页的实验步骤。

继承和接口的实验报告

继承和接口的实验报告

深圳大学实验报告课程名称:JA V A程序设计实验项目名称:继承和接口学院:计算机与软件学院专业:指导教师:**报告人:侯锦辉学号:********** 班级:01 实验时间:2016-10-11实验报告提交时间:2016.10.22教务处制一、实验目的(1)理解继承的概念,掌握继承的语法;(2)学习定义和使用子类;(3)学习定义和使用抽象类;(4)学习定义和使用接口;(5)学习实现接口;(6)掌握继承过程中的方法覆盖,区分它与方法重载的不同;(7)掌握如何利用接口间接实现多重继承;(8)掌握对象类型之间的转换规则;(9)掌握多态与动态绑定。

二、实验内容本次实验内容有两题:第一题:(1)编写图形接口Shape,该接口包含一个常量pi(pi=3.14)和三个抽象方法:一个是getCircumference(),功能为求图形的周长;一个是getArea(),功能为求图形的面积;一个是getShapeName(),功能为返回图形的名称。

(2)编写类Show,该类有一个方法:printShape(Shape sh),功能为输出图形参数sh的名称、周长和面积。

(3)编写Show的两个子类,一个是圆形类Circle,另一个是矩形类Rectangle,要求这两个类都要实现图形接口Shape。

Circle类有一个成员变量:radius(圆的半径);Rectangle类有两个成员变量:height(长方形的高)和width(长方形的宽)。

并且,Rectangle类包含一个内部类JudgeSquare,它有一个方法judge(),判断这个长方形是否为一个正方形,并输出判断结果。

(4)编写测试类Test,生成一个Circle对象和两个Rectangle对象(一个为长方形,一个为正方形),三个对象分别调用父类的printShape方法,输出各自的周长和面积;其中Rectangle 对象还要调用内部类JudgeSquare的方法judge来判断自己是否为正方形;输出结果类似如下所示:(提示:实现一个接口的类的对象,可利用接口回调直接赋值给接口,和上转型类似(子类对象可直接赋值给父类对象))第二题:请设计3个类,分别是学生类Student,本科生类Undergraduate,研究生类Postgraduate,其中Student类是一个抽象类,它包含一些基本的学生信息,如姓名、类别(本科生还是研究生)、所学课程(这里假定为3门课,用一维数组表示)成绩和成绩等级等,而Undergraduate 类和Postgraduate都是Student类的子类,它们之间的主要差别是计算3门课程平均成绩等级的方法有所不同,研究生的标准要比本科生的标准高一些,如下表所示:80~100 优秀90~100 优秀70~80 良好80~90 良好60~70 一般70~80 一般50~60 及格60~70 及格50以下不及格60以下不及格假设某班级里既有本科生(3个)也有研究生(2个),请编写程序统计全班学生的成绩等级并显示出来。

java实验,继承与接口

java实验,继承与接口

一、实验目的与要求实验目的:1、掌握类的继承关系。

2、掌握接口的定义与使用。

实验要求:按下列要求编写Java程序:1、定义接口Printx,其中包括一个方法printMyWay(),这个方法没有形参,返回值为空。

2、编写矩形类,矩形类要求实现Printx接口,有求面积、求周长的方法,printMyWay()方法要能显示矩形的边长、面积和周长。

3、编写正方形类作为矩形类的子类,正方形类继承了矩形类求面积和周长的方法,新增加求对角线长的方法,重写printMyWay()方法,要求该方法能显示正方形的边长、面积、周长和对角线长。

二、实验方案/** To change this template, choose Tools | Templates* and open the template in the editor.*/package 继承与接口;interface Printx{void printMyWay();}class rectangle implements Printx{double length = 0,wide=0;public rectangle(double l, double w){length=l;wide=w;}double area(){double area = length * wide;return area;}double peritemer(){double peritemer=(length+wide)*2;return peritemer;}public void printMyWay(){System.out.println("长方形边长是:"+length+" "+wide);System.out.println("长方形面积是:"+area());System.out.println("长方形周长是:"+peritemer());}}class square extends rectangle{public square(double l,double w){super(l,w);}double diagonal(){return Math.sqrt(length*length*2);}@Overridepublic void printMyWay(){System.out.println("正方形边长是:"+length);System.out.println("正方形面积是:"+area());System.out.println("正方形周长是:"+peritemer());System.out.println("正方形的对角线长是:"+diagonal());}}public class Main{static double length = 0,wide=0;public static void main(String[] args) {rectangle a=new rectangle(8,4);square b=new square(6,6);a.printMyWay();b.printMyWay();// TODO code application logic here}}三、实验结果和数据处理将长方形的长和宽设置为8和4,正方形边长设置为6,输出结果如下:四、结论接口是Java实现部分多继承功能的体现。

继承与多态实验报告

继承与多态实验报告

实验五继承与多态理解继承与多态的概念,掌握三种访问控制的区别,掌握抽象类、接口与包的应用。

二、实验内容:1. 参考教材P112,示例程序C5_17,掌握抽象类的应用。

2. 参考教材P116,示例程序C5_19,掌握接口的使用方法。

3. 参考教材P121,示例程序C5_20,掌握包的使用方法。

三、实验要求:1.完成示例程序的验证。

2.写出实验报告。

四、实验步骤与结果:(由学生按照实验内容完成)1. 示例程序c5_17import java.awt.*;import java.applet. *;abstract class Shapes //定义一个抽象类Shapes{public int x,y; //x、y为画图的坐标public int width,height;public Shapes(int x,int y,int width,int height){ this.x=x;this.y=y;this.width=width;this.height=height;}abstract double getArea( ); //求图形面积的抽象方法abstract double getPerimeter( ); //求图形周长的抽象方法}class Square extends Shapes //由抽象类Shapes派生的子类——矩形类{public double getArea( ){return(width*height);}public double getPerimeter( ){return(2*width+2*height);}public Square(int x,int y,int width,int height){ super(x,y,width,height); }}class Triangle extends Shapes //由抽象类Shapes派生的子类——三角形类{public double c; //斜边public double getArea( ){return(0.5*width*height);}public double getPerimeter( ){return(width+height+c);}public Triangle(int x,int y,int base,int height){super(x,y,base,height);c=Math.sqrt(width*width+height*height);}}class Circle extends Shapes //由抽象类Shapes派生的子类——圆类{public double r; //半径public double getArea( ){return(r*r*Math.PI);}public double getPerimeter( ){return(2*Math.PI*r);}public Circle(int x,int y,int width,int height){super(x,y,width,height);r=(double)width/2.0;}}public class c5_18 extends Applet{/****/private static final long serialVersionUID = -L;Square Box=new Square(5,15,25,25);Triangle tri=new Triangle(5,50,8,4);Circle Oval=new Circle(5,90,25,25);public void paint(Graphics g){//画正方形g.drawRect(Box.x,Box.y,Box.width,Box.height);g.drawString("Box Area:"+Box.getArea( ),50,35);g.drawString("Box Perimeter:"+Box.getPerimeter( ),50,55);g.drawString("tri Area:"+tri.getArea( ),50,75);g.drawString("tri Perimeter:"+tri.getPerimeter( ),50,95);g.drawOval(Oval.x,Oval.y,Oval.width,Oval.height); //画圆g.drawString("oval Area:"+Oval.getArea( ),50,115);}}2. 示例程序C5_19import java.awt.*;import java.applet.*;interface Shapes{ abstract double getArea( );abstract double getPerimeter( );}class Coordinates{int x,y;public Coordinates(int x,int y){this.x=x;this.y=y;}}//Square Coordinates Shapesclass Square extends Coordinates implements Shapes{public int width,height;public double getArea( ){return(width*height);}public double getPerimeter( ){return(2*width+2*height);} public Square(int x,int y,int width,int height){super(x,y);this.width=width;this.height=height;}}class Triangle extends Coordinates implements Shapes{public int width,height;public double c;public double getArea( ){return(0.5*width*height);}public double getPerimeter( ){return(width+height+c);}public Triangle(int x,int y,int base,int height){super(x,y);width=base;this.height=height;c=Math.sqrt(width*width+height*height);}}class Circle extends Coordinates implements Shapes{public int width,height;public double r;public double getArea( ){return(r*r*Math.PI);}public double getPerimeter( ){return(2*Math.PI*r);}public Circle(int x,int y,int width,int height){super(x,y);this.width=width;this.height=height;r=(double)width/2.0;}}public class c5_20 extends Applet{/****/private static final long serialVersionUID = L;Square Box=new Square(5,15,25,25);Triangle tri=new Triangle(5,50,8,4);Circle Oval=new Circle(5,90,25,25);public void paint(Graphics g){g.drawRect(Box.x,Box.y,Box.width,Box.height);g.drawString("Box Area:"+Box.getArea( ),50,35);g.drawString("Box Perimeter:"+Box.getPerimeter( ),50,55);g.drawString("tri Area:"+tri.getArea( ),50,75);g.drawString("tri Perimeter:"+tri.getPerimeter( ),50,95);g.drawOval(Oval.x,Oval.y,Oval.width,Oval.height);g.drawString("oval Area:"+Oval.getArea( ),50,115);}}五.总结。

继承与接口实验报告

继承与接口实验报告

继承与接口实验报告实验名称:继承与接口实验实验目的:通过编写一个Java程序,探究继承与接口的相关概念、特点和应用。

实验过程:在实验过程中,我们创建了一个Java程序,包含了多个类和接口,用于说明继承和接口的相关概念和应用。

其中,类之间的继承关系如下所示:``` Animal ├── Mammal │ ├── Cat │ └── Dog └── Reptile └── Snake ```注:以上为继承关系图,箭头指向父类/超类。

在该程序中,所有的动物(Animal)都有以下属性:- 名称(name) - 年龄(age)除此之外,猫(Cat)、狗(Dog)和蛇(Snake)都有自己的属性和方法。

其中,猫和狗都是哺乳动物(Mammal),而蛇是爬行动物(Reptile)。

我们使用了两个接口,分别是:- 可以发声的(Soundable) - 可以移动的(Movable)这两个接口分别定义了两个方法:发声(makeSound)和移动(move)。

在这些类和接口的基础上,我们编写了一个测试类(TestAnimals),测试了每个类和接口的功能。

实验结果:- Animal类:Animal类是所有动物的“祖先”类,它包含了所有动物共有的属性。

- Mammal类:Mammal类是哺乳动物的基类,它包含了所有哺乳动物共有的属性和方法。

- Reptile类:Reptile类是爬行动物的基类,它包含了所有爬行动物共有的属性和方法。

- Cat类:Cat类继承了Mammal类,它包含了猫的属性和方法。

- Dog类:Dog类继承了Mammal类,它包含了狗的属性和方法。

- Snake类:Snake类继承了Reptile类,它包含了蛇的属性和方法。

- Soundable接口:Soundable接口定义了makeSound 方法,用于让实现了该接口的类发出声音。

- Movable接口:Movable接口定义了move方法,用于让实现了该接口的类移动。

继承与接口实验报告

继承与接口实验报告

继承与接口实验报告本次实验主要涉及到Java中的继承和接口的使用。

通过实验,我们可以更好地理解和掌握继承和接口的概念、特点和使用方法。

实验步骤:1. 创建一个父类Animal,其中包含成员变量name和age,以及方法eat()和sleep()。

2. 创建两个子类Cat和Dog,它们分别继承自Animal类,并分别实现自己的eat()和sleep()方法。

3. 创建一个接口Swim,其中包含一个swim()方法。

4. 在Dog类中实现Swim接口,并实现swim()方法。

5. 创建一个测试类Test,其中包含main()方法。

在main()方法中,创建一个Cat对象和一个Dog对象,并分别调用它们的eat()和sleep()方法。

6. 在main()方法中,创建一个Swim类型的变量s,将Dog对象赋值给它,并调用s的swim()方法。

实验结果:通过实验,我们成功地创建了Animal类和它的两个子类Cat和Dog,它们分别继承了Animal类的成员变量和方法,并实现了自己的eat()和sleep()方法。

同时,我们还创建了Swim接口,并在Dog类中实现了它。

在测试类Test中,我们成功地创建了Cat和Dog对象,并调用了它们的eat()和sleep()方法。

同时,我们还创建了一个Swim 类型的变量s,将Dog对象赋值给它,并调用了s的swim()方法。

实验结论:通过本次实验,我们深入理解了Java中的继承和接口的概念和使用方法。

其中,继承可以让子类继承父类的成员变量和方法,从而避免了重复编写代码的问题;而接口则可以让类实现共同的方法,提高代码的重用性和可维护性。

同时,我们还学会了如何在子类中实现接口,并在测试类中使用。

这些知识对于我们今后的Java程序开发将有很大的帮助。

实验5 继承与接口

实验5 继承与接口

实验5 继承与接口[实验目的]1、掌握java 继承中父类及其子类的定义方法。

2、掌握子类重写父类同名方法的方法。

3、掌握接口的用法。

(1) 学习如何定义接口 ;(2) 掌握接口的实现方式 ;(3) 使用实现了接口的类 ;(4) 理解接口与抽象类的区别。

[实验要求]1、复习理论教学中所学的内容。

2、认真进行实验预习,查阅参考书,书写源程序,书写实验预习报告。

3、认真总结实验并书写实验报告。

[实验课时] 2学时[实验教学方式] 学生上机实验,教师随堂指导。

[实验内容]1、类的继承性练习(一)创建将被继承的类(1) 程序源代码如下。

public class EXP5_7{protected String xm; //姓名,具有保护修饰符的成员变量protected int xh;//学号void setdata(String xm,int xh) //设置数据的方法{this.xh=xh;this.xm=xm;}public void print() //输出数据的方法{System.out.println(xm+", "+xh);}}(2) 编译源程序。

(二)创建将被继承的类(1) 程序功能:通过EXP5_7类产生子类EXP5_8,其不仅具有父类的成员变量xm(姓名)、xh(学号),还定义了新成员变量xy(学院)、bj(bj)。

在程序中调用了父类的print 方法,同时可以看出子类也具有该方法。

(2) 程序源代码如下。

class EXP5_8 extends EXP5_7{protected String xy;protected String bj;public static void main(String args[]){EXP5_7 p1 = new EXP5_7();p1.setdata("李四",12321) ;p1.print();EXP5_8 s1 = new EXP5_8() ;s1.setdata("张三",12345); //调用父类的成员方法s1.xy="山西大学计算机学院"; //访问本类的成员变量s1.bj="2008级计算机科学与技术"; //访问本类的成员变量s1.print();System.out.print(s1.xm+", "+s1.xy+", "+s1.bj);}}(1)编译并运行,结果如图5.7所示。

实验五

实验五
图5.4
(2)运行结果如图5.5所示。
图5.5
3.This、super和super()的使用
(1)程序功能:说明this、super和super()的用法。程序首先定义Point(点)类,然后创建点的子类Line(线)。最后通过LX3_4类输出线段的长度。
(2)使用this、super和super()的程序文件LX3_4.java,源代码如下图5.6所示。
多态是一种编程技巧它增加论了程序的可扩展性
2.接口有什么作用?如何实现系统接口。
接口的作用就是把使用接口的人和实现接口的人分开,实现接口的人不必要关心谁去使用,而使用接口的人也不用关心谁实现的接口,由接口将他们联系在一起。接口的用处在于整个程序段中相同类型的类有个统一的规范。
3.如何创建一个自定义接口?如何在一个类中实现这个接口?
图5.6
(3)编译并运行程序,结果如图5.7所示。
图5.7
二、类的多态性练习
1.方法的重载
方法的重载是指对同名方法的不同使用方式。
(1)程序功能:对不同的数进行排序输出。在IntSort类中定义3个同名的方法sort,
(1)编写构造方法RunDemo的重载程序文件LX3_12,源代码如下。
(2)编译并运行程序,结果如图5.4所示。
【思考题】
1.说明类的继承和多态用的一种形式,实现这种形式的方法是从现有的类建立新类,新类继承了现有类的方法和属性,同时新类又可以定义自己的方法和属性。软件复用缩自短了开发时间。继承的魅力在于能够添加基类没有的特点从而对基类进行改进。
子类继承后可以重写,也可以不重写,看需要决定。如果重写的话在实例中调用的是新写的方法,如果不重写的话在实例中调用的是父类的方法。
创建接口:public interface myFirstInterface(){

实验五 继承与接口

实验五 继承与接口

实验五继承与接口1.实验目的1、掌握类的继承细节内容,包括子类的继承、子类对象创建、成员变量的继承与隐藏、方法的继承与重写2、掌握重写的目的以及怎样使用super关键字3、掌握上转型对象与接口回调技术4、掌握类怎样实现接口,及面向接口的编程思想2.实验内容1、根据附录里的源代码,按照注释要求,完成代码填空,使程序能够运行得出结果。

1)实验1中国人与美国人2)实验2银行与利息3)实验3面积之和4)实验4歌手大赛5)实验5天气预报2、设计编写程序完成以下任务。

1)根据要求修改实验2,参照建设银行再编写一个商业银行(广发行),让程序输出8000元在广发行8年零212天的利息。

2)根据要求修改实验3,再增加一种几何图形(梯形),并让主类中的tuxing 的某些元素是梯形的上转型对象。

3)仿照实验5编写一个程序实现模拟水杯中的水在不同温度下可能出现的状态。

4)编写一个接口并创建两个实现该接口的类A、B。

A、B类实现了接口的f 方法,A类的f方法内容为计算1!+3!+5!……+9!并返回结果,B类的f方法内容为计算2!+4!+6!……+10!也返回结果;再编一个执行类,执行类运行时要求通过接口回调方式用同一个对象实例分别调用A类的f方法和B类的f 方法。

5)(1)定义一个汽车类Vehicle,要求如下:(知识点:类的继承方法的覆盖)(a)属性包括:汽车品牌brand(String类型)、颜色color(String类型)和速度speed(double类型)。

(b)至少提供一个有参的构造方法(要求品牌和颜色可以初始化为任意值,但速度的初始值必须为0)。

(c)为属性提供访问器方法。

注意:汽车品牌一旦初始化之后不能修改。

(d)定义一个一般方法run(),用打印语句描述汽车奔跑的功能。

定义测试类VehicleTest,在其main方法中创建一个品牌为“benz”、颜色为“black”的汽车。

(2)定义一个Vehicle类的子类轿车类Car,要求如下:(a)轿车有自己的属性载人数loader(int 类型)。

java实验-----接口和继承

java实验-----接口和继承

实验五继承与接口实验目的:掌握继承机制;掌握super、this等关键字的使用实验内容:1.有一个程序如下所示。

若要输出父类成员x的值(25)如何完成?补充程序(用尽可能多的方法完成)。

class A1{int x=25;}public class Chap4 extends A1{ int x=15;public static void main(String[] args)………}提示:方法1——创建父类对象进行成员值的输出方法2——创建子类对象时,利用构造方法进行初始化,并初始化成父类成员的值方法3——定义显示方法,利用super方式输出2.有一个类定义如下:class Mankind{char sex;int salary;public void manOrWoman(){switch(sex){case 'm':System.out.println("a man");break;case 'w':System.out.println("a woman");break;default:System.out.println("not a man or a woman");}}public void employed(int salaryValue){if(salaryValue==0) System.out.println("no job");else System.out.println("job");}}再设计一个类(Kids),表示儿童群体。

对于每一个儿童而言:有sex和age属性;可以打印年龄;判断出是男孩、女孩在输出是否被雇佣信息时,一律打印“kids shoud study and no work”充分利用继承的关系完成程序设计,要求打印出某一个孩子的年龄、根据性别(’m’or’w’)输出“is a boy”or“is a girl”,输出雇佣情况。

继承实验报告实验总结

继承实验报告实验总结

一、实验目的本次实验旨在通过C++语言对类的继承机制进行深入学习和实践,了解不同继承方式下基类成员在派生类中的访问权限,掌握构造函数与析构函数的调用时机与顺序,以及虚基类在多继承中的特殊作用。

二、实验内容1. 类的继承方式(1)公有继承在公有继承中,基类的公有成员和保护成员在派生类中分别作为公有成员和保护成员,派生类的成员函数可以直接访问它们,而无法直接访问基类的私有成员。

在类的外部,派生类的对象可以访问继承下来的基类公有成员。

(2)私有继承在私有继承中,基类的公有成员和保护成员作为派生类的私有成员,派生类的成员函数可以直接访问它们,但无法直接访问基类的私有成员。

在类外部,派生类的对象无法访问基类的所有成员。

(3)保护继承在保护继承中,基类的公有成员和保护成员作为派生类的保护成员,派生类的成员函数可以直接访问它们,但无法直接访问基类的私有成员。

在类外部,派生类的对象无法访问基类的所有成员。

2. 构造函数与析构函数的调用时机与顺序在多继承中,构造函数的调用顺序如下:(1)先调用所有基类的构造函数;(2)再调用派生类中子对象类的构造函数(如果派生类中没有子对象),最后调用派生类的构造函数;(3)析构函数的调用顺序与构造函数相反,先调用派生类的析构函数,再调用子对象类的析构函数,最后调用基类的析构函数。

3. 虚基类的构造函数与普通基类的构造函数在调用时的不同在多继承中,若存在虚基类,则其构造函数只会被调用一次,即使它在多个派生类中被继承。

这是因为虚基类在第一次继承时就已经初始化,后续的继承将直接使用已初始化的虚基类实例。

三、实验结果与分析1. 通过实验,我们验证了不同继承方式下基类成员在派生类中的访问权限,明确了公有继承、私有继承和保护继承的区别。

2. 实验结果显示,在多继承中,构造函数和析构函数的调用顺序符合预期,派生类可以正确地调用基类和子对象类的构造函数和析构函数。

3. 通过实验,我们了解了虚基类在多继承中的作用,避免了重复初始化同一基类的问题。

Java程序设计 实验05 继承和接口

Java程序设计 实验05 继承和接口

实验51、实验名称:继承和接口2、实验班级:软件08013、指导老师:陈欲勐4、实验环境4.1 实验室:教学楼68084.2 软件环境:win2000 Server,Eclipse 3.2,JDK 1.5/1.65、实验目的1.掌握继承的概念,以及子类对象的创建、成员变量的继承/隐藏,还有方法的继承和重写。

2.掌握向上转型对象的使用;3.掌握接口回调技术;6、实验任务6.1 提高性实验任务完成实验指导教材中的相关实验任务(源代码可以参照补充资料“实验指导_习题解答”)1.实验 1 继承(源程序在所提供的包chap4.exercise2下的文件TestInheritance.java,正确程序在所提供的包chap4.exercise下的文件TestInheritance.java)2.实验2 向上转型对象(源程序在所提供的包chap4.exercise2下的文件TestUpcast.java,正确程序在所提供的包chap4.exercise下的文件TestUpcast.java)3.实验 3 接口回调(源程序在所提供的包chap4.exercise2下的文件TestInterface.java,正确程序在所提供的包chap4.exercise下的文件TestInterface.java)6.2 验证性实验任务对教材中的相关例子在Eclipse开发平台中进行验证(源代码可以参照补充资料“教材源代码”):1.第4章中的例子,在包chap4.example中。

1)Example4_19相关知识点:向上转型;2)Example4_20相关知识点:多态;3)Example4_21和 Example4_22相关知识点:抽象类和抽象方法;4)Example4_23和 Example4_24相关知识点:super关键字;5)Example4_24和 Example4_25相关知识点:接口的定义和实现;6)Example4_25和 Example4_26相关知识点:接口回调;7)Example4_33相关知识点:异常类;8)Example4_34相关知识点:自定义异常类;9)Example4_35相关知识点:Class类;7、思考题1.什么是继承?不同的访问限定符(如public)所定义的属性或方法,都能被继承么,哪些能继承哪些不能不被继承?2.什么是多态?3.什么是向上转型?为什么要使用向上转型;向上转型在抽象类和接口中的定义和使用是如何实现的?。

实验5继承与接口(二)剖析

实验5继承与接口(二)剖析

实验5、继承与接口(二)一、实验目的1.子类的继承性2.深入理解类的继承的基本概念及实现。

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

4.掌握super关键字的作用。

5.掌握抽象类与接口的基本概念及实际应用6.掌握对象多态性的作用。

7.掌握接口的基本概念及实际应用。

8.掌握接口回调的概念及运行机制。

二、实验内容及步骤1、重写Object类的equals方法任务一:使用继承自Object类的equals方法进行Person对象的比较操作。

(1)源代码如下:class Person{private String name;private int age;public Person(String name,int age){ = name;this.age = age;}//getter与setter方法略。

public String toString(){return “姓名:”++”;年龄:”+this.age;}}public class PersonDemo{public static void main(String args[]){Person person1 = new Person(“李兴华”,30);Person person2 = new Person(“李兴华”,30);System.out.println(person1.equals(person2)?”是同一个人。

”:”不是同一个人。

”);}}(2)编译并运行应用程序。

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

思考:应用程序中person1对象调用的equals方法是从哪个类继承的,请查看源代码,说明此equals方法的作用,即比较的内容。

任务二:修改上述源代码Person类,使PersonDemo应用程序执行结果为“同一个人”。

2、对象的上转型对象任务一:对象的上转型对象接收任意子类类型的对象(1)使用Object接收一切的引用类型对象。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五继承和接口
(实验报告)
一、目的
1.掌握Java语言继承机制。

二、实验内容
定义一个超类,定义一个子类,实例化子类对象,调用超类的属性和方法,体会继承机制。

三、实验环境
JDK1.6+dos环境
四、实验原理
1.继承机制
五、实验步骤
1、定义一个Person类,有属性姓名,年龄,性别。

Person具有
吃饭,睡觉的行为。

定义一个Student类继承Person类,Student
具有学习,看书的行为。

定义一个接口,能够输出自己的基本
信息。

完成所设计的类的测试。

class Person{
private String name;
private int age;
private String sex;
public void setName( String name){ =name;
}
public String getName( ){
return name;
}
public void setAge( int age){
this.age=age;
}
public int getAge( ){
return age ;
}
public void setSex( String sex){
this.sex=sex;
}
public String getSex( ){
return sex;
}
public void tell01(){
System.out.println("会吃饭,能睡觉"); }
public void tell02(){
System.out.println("姓名:"+this.getName()+"性别:"+this.getSex()+"年龄:"+this.getAge());
}
}
interface A{
public void print01();
public void print02();
}
class Student extends Person implements A{
private int number;
public void setNumber(int number){
this.number=number;
}
public int getNumber( ){
return number;
}
public void tell03(){
System.out.println("姓名:"+this.getName()+"\n性
别:"+this.getSex()+"\n年龄:"+this.getAge()+"\n学号:"+this.getNumber());
}
public void tell04(){
System.out.println("爱学习,喜欢看书");
}
public void print01(){
System.out.println("巴黎下着小雨!!!");
}
public void print02(){
System.out.println("吉大正在飚雨!!!");
}
}
public class mytest01{
public static void main(String args[]){
Student stu = new Student();
stu.setName("张三");
stu.setAge(20);
stu.setSex("男");
stu.setNumber(2011);
stu.tell01();
stu.tell03();
stu.tell04();
stu.print01();
stu.print02();
}
}
六、实验小结。

相关文档
最新文档