文档库 最新最全的文档下载
当前位置:文档库 › 实验6 继承与接口

实验6 继承与接口

实验6 继承与接口
实验6 继承与接口

山西大学计算机与信息技术学院实验报告

}

(2) 编译源并运行程序。贴图如下

图一

(二)创建将被继承的类

Student类产生子类CollegeStudent,其不仅具有父类的成员变量xm(姓名)(1) 程序功能:通过、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();

out瀮楲瑮尨学院: ?祸尫班级:+bj);

System. }

}

TestCollegeStudent{

class main(String[] args) { staticpublic void CollegeStudent(); CollegeStudent cs = new , 1); ?㈠?日名??尠计算机学院小蓝獣献瑥慤慴尨cs.print();

}

}

:

运行结果贴图

(1)编写覆盖了Object 类toString方法的一个类,并用System.out.println()输出该类的一个对象。

程序代码:

public class OverWriteToString {

private String str;

public OverWriteToString(){

}

public OverWriteToString(String str){

this.str = str;

}

public String ToString(){

return super.toString()+\

+str;

}

public static void main(String[] args) {

OverWriteToString o = new OverWriteToString(This is a method

+ o overwrite ToString method!);

out.println(o.ToString());

System. }

}

运行结果贴图:

图三类包含Point()方法进行覆盖,equals和clone()类的Object类为例,尝试为Point)试着以2(.

图四 super()的使用this、super和(四)(1)程序功能:说明this、super 和super()的用法。程序首先定义Point(点)类,然后创建点的子类Line(线)。最后通过TestLine类输出线段的长度。程序中通过super(a,b)调用父类Point 的构造方法为父类的x 和y 赋值。在子类Line 的setLine方法中,因为参数名和成员变量名相同,为给成员变量赋值,使用this 引用,告诉编译器是为当前类的成员变量赋值。在length 和toString 方法中使用父类成员变量时,使用super 引用,告诉编译器使用的是父类的成员变量。

程序代码:

public class Line extends Point{

private Point p1;

private Point p2;

public Line(){

super(5,5);

}

public Line(int x1,int y1,int x2,int y2){

super(5,5);

p1 = new Point(x1,y1);

p2 = new Point(x2,y2);

}

public Line(Point p1,Point p2){

super(5,5);

this.p1 = p1;

this.p2 = p2;

}

public void setLine(Point p1,Point p2){

this.p1 = p1;

this.p2 = p2;

}

public double legth(){

sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y)); return Math. }

public String toString(){

return super.toString()+\

该线起点为:(+p1.x+,+p1.y+)

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.掌握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;

实验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()"); }

实验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); } } package T6; import java.util.*;

public class LX6_1 extends Student{ public LX6_1(){}; public static void main(String[] args) { Scanner input=new Scanner(System.in); LX6_1 text=new LX6_1(); System.out.println("请输入姓名和学号:"); text.setdata(input.next(), input.nextInt()); System.out.println("显示如下:"); text.print(); } } (2) 编译源并运行程序。贴图如下 (二)创建将被继承的类 (1) 程序功能:通过Student类产生子类CollegeStudent,其不仅具有父类的成员变量xm(姓名)、 xh(学号),还定义了新成员变量xy(学院)、bj(班级)。在程序中调用了父类的print 方法,同时可以看出子类也具有该方法。 程序代码: package T6; public class CollegeStudent extends Student { private String xy; private String bj; public CollegeStudent() { };

实验二 继承与接口实验

实验二继承与接口 一、实验目的 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()); }

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.wendangku.net/doc/b94698418.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("战斗机移动!!!");

接口与实现实验报告

接口与实现实验报告 部门: xxx 时间: xxx 整理范文,仅供参考,可下载自行编辑

XXXXXXXX 实验报告 XXXXXXXXXXb5E2RGbCAP 系部计算机系班级XXXX班课程Java语言程序设计 姓名XXXX 学号2XXXXX日期XXXXXXXXXXX 工程接口与实现——评价成绩 1.相关知识点 接口体中只有常量的声明<没有变量)和抽象方法的声明。而且接口体中所有的常量的访问权限一定都是public<允许省略public、final修饰符),所有的抽象方法的访问权限一定都是public<允许省略public、final修饰符)。p1EanqFDPw 接口由类去实现以便绑定接口中的方法。一个类可以实现多个接口,类通过使用关键字implements声明自己实现一个或多个接口。如果一个非抽象类实现了某个接口,那么这个类必须重写该接口的所有方法。DXDiTa9E3d 2.实验目的

本实验的目的是让学生掌握类怎样实现接口。 3.实验要求 体操比赛计算选手成绩的办法是去掉一个最高分和最低分后再计算平均分,而学校考察一个班级的某科目的考试情况时,是计算全班同学的平均成绩。Gymnastics类和School类都实现了ComputerAverage接口,但实现的方式不同。RTCrpUDGiT 4.程序源代码 interface ComputerAverage { public duble average(double x[]>。 } class Gymnastics implements ComputerAverage { public double average(double x[]>。 { int count=x.length。 double aver=0,temp=0。 for(int i=0。i{

继承与接口练习题

/******** 以下作业在代码编写过程中要按照注释规范对类,方法,属性,局部变量进行注释 关键代码片段也需要进行注释说明 ********/ 1、 根据如下图示,使用继承编写出对应的程序。然后分别创建对应的车辆,调用方法输出 车辆信息,并测试每辆车包含的其他方法。尽量让你的程序变得有意思一些(属性和方法可添加和扩展)。 2、 请编码实现动物世界的继承关系: 动物(Animal )具有行为:吃(eat )、睡觉(sleep ) 动物包括:兔子(Rabbit ),老虎(Tiger ) 这些动物吃的行为各不相同(兔子吃草,老虎吃肉);但睡觉的行为是一致的。 请通过继承实现以上需求,并编写测试类AnimalTest 进行测试 3、 请使用接口编码实现如下需求: 乐器(Instrument )分为:钢琴(Piano)、小提琴(Violin) 各种乐器的弹奏( play )方法各不相同。 编写一个测试类InstrumentTest ,要求: 编写方法testPlay ,对各种乐器进行弹奏测试。要依据乐器的不同,进行相应的弹奏。 在main 方法中创建不同的乐器对象,通过testPlay 的弹奏测试方法进行测试。 4、 定义Fight 接口,其中有一个打人的动作(fight )。让胖人(FatFat )和瘦人(Thinthin ) 分别实现打人接口,但具有不同的打人结果:胖人打人疼,瘦人打人不疼。编写测试类,使用多态的方式对不同人打人的动作进行测试,输出胖人和瘦人打人的动作。 5、 医生(Doctor )有姓名(name )、编号(idNumber )和地址(address )等基本信息, 还都具有量体温 (temperature)和开药(giveMedicine )的方法。 巴士是汽车吗? 卡车是汽车吗? 出租车是汽车吗? 最大载客数量 报站 让座提示 引擎数量 外观颜色 品牌 车牌 刹车 加速 汽车 最大载重量 卸货 所属公司 最大载客数量 打发票 属性 行为 请问:出租车包含哪些属性和行为呢?

继承与接口实验

深圳大学 实验报告 课程名称:Java 实验序号:实验2 实验名称:继承与接口 班级:计算机3 姓名:卢志敏 同组人:实验日期:2008 年11 月16 日 教师签字:

一、实验目的 1.继承 ●子类的继承性 ●子类对象的创建过程 ●成员变量的继承与隐藏 ●方法的继承与重写 2.上转型对象 掌握上转型对象的使用 3.接口回调 掌握接口回调技术 二、实验环境 JDK1.5 Winxp 三、实验步骤与方法 实验1 编写一个Java应用程序,除了主类外,该程序中还有4个类:People、ChinaPeople、AmericanPeople类。该程序具体要求如下: ●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是ChinaPelple的子类,新增public void beijingOpera()方法。要求 ChinaPeople重写父类的public void speakHello()、public void averageHeight()和 public void averageWeight()方法。 实验2 要求有一个abstract类,类名为Employee。Employee的子类有YearWorker、MonthWorker 和WeekWorker。YearWorker对象按年领取薪水,MonthWorker按月领取薪水,WeekWorker 按周领取薪水。Employee类有个abstract方法: Public abstract earnings(); 子类必须重写父类的earnings()方法,给出各自领取薪水的具体方式。 有一个Company类,该类用Employee数组作为成员,Employee数组的单元可以是YearWorker对象的上转型对象、MonthWorker对象的上转型对象、WeekWorker对象的上转型对象。程序能输出Company对象一年需要支付的薪水总额。 实验3 卡车要装载一批货物,货物有3种商品:电视、计算机和洗衣机。需要计算出大货车和小货车各自做载重的3种货物的总重量。

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

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

实验报告 继承、多态与接口

实验三继承、多态与接口 一、实验目的 1.掌握Ja v a的继承机制; 2.掌握对象引用的多态方法; 3.掌握接口的特点、结构和调用; 4.掌握接口和继承的混合使用。 二、实验要求 1.编写体现类的继承性(成员变量、成员方法、成员变量隐藏) 的程序。 2.编写体现类的多态性(成员方法重载、构造方法重载)的程 序。 3.编程使用系统接口的技术和创建自定义接口的方法。 三、实验内容 (一)类的继承性练习 1.理解继承的含义 新类可从现有的类中产生,并保留现有类的成员变量和方法并可根据需要对它们加以修改。新类还可添加新的变量和方法。这种现象就称为类的继承。 当建立一个新类时,不必写出全部成员变量和成员方法。只要简单地声明这个类是从一个已定义的类继承下来的,就可以引用被继承类的全部成员。被继承的类称为父类或超类 (su pe rc la ss),这个新类称为子类。 J a va 提供了一个庞大的类库让开发人员继承和使用。设计这些类是出于公用的目的,因此,很少有某个类恰恰满足你的需要。你必须设计自己的能处理实际问题的类,如果你设计的这个类仅仅实现了继承,则和父类毫无两样。所以,通常要对子类进行扩展,即添加新的属性和方法。这使得子类要比父类大,但更具特殊性,代表着一组更具体的对象。继承的意义就在于此。 2.创建公共类S Y3_1_P 编写程序文件S Y3_1_P.ja va,源代码如下:pu bl ic c la ss SY3_1_P{ pr ote c te d St ri ng x m; //具有保护修饰符的成员变量 pr ote c te d in t xh; vo id s et da ta(S tr in g m,in t h) { //设置数据的方法 xm =m; xh = h; } pu bl i c vo id p ri nt(){//输出数据的方法 Sy st em.o ut.pr i nt ln(x m+", "+xh); } }

继承和接口设计习题

第7章继承和接口设计 一.选择题 1.在C#中,一个类【】。 A) 可以继承多个类B) 可以实现多个接口 C) 在一个程序中只能有一个子类D) 只能实现一个接口 2.【】关键字用于在C#中从派生类中访问基类的成员。 A) new B) super C) this D) base 3.在定义类时,若希望类的某个方法能够在派生类中进一步改进,以满足派生类的不同需要,则应将该方法声明为【】。 A) new B) public C) virtual D) override 4.在C#中,在派生类中对基类的虚方法进行重写,要求在派生类的声明中使用【】。 A) new B) public C) virtual D) override 5.已知类B是由类A继承而来,类A中有一个名为M的非虚方法,现在希望在类B中也定义一个名为M的方法,且两方法的参数个数和类型完全相同,若希望编译时不出现警告信息,则在类B中声明该方法时,应使用【】关键字。 A) static B) new C) override D) virtual 6.假设类B继承了类A,下列说法错误的是【】。 A) 类B中的成员可以访问类A中的公有成员 B) 类B中的成员可以访问类A中的保护成员 C) 类B中的成员可以访问类A中的私有成员 D) 类B中的成员可以访问类A中的静态成员 7.关于多态,下列说法正确的是【】。 A) 多态实际上就是重载,它们本质上是以一样的 B) 多态可以分为编译时多态和运行时多态。前者的特点是在编译时就能确定要调用成 员方法的哪个版本,后者则是在程序运行时才能确定要调用成员方法的哪个版本。 C) 编译时多态是在程序运行时才能确定要调用成员方法的哪个版本,而运行时多态在 编译时就能确定要调用成员方法的哪个版本。 D) 多态和重载是两个完全不同的概念,前者是通过定义虚方法和重写虚方法来实现, 后者是通过对同一函数名编写多个不同的实现代码来实现。 8.下列关于接口的说法,正确的是【】。 A) 接口中定义的方法都必须是虚方法 B) 接口中定义的方法可以编写其实现代码 C) 继承接口的类可提供被继承接口中部分成员的实现代码 D) 接口中的所有方法都必须在其派生类中得到实现。 9.下列关于虚方法的描述中,正确的是【】。 A) 虚方法能在程序执行时动态确定要调用的方法,因此比非虚方法更灵活 B) 在定义虚方法时,基类和派生类的方法定义语句中都要带上virtual修饰符 C) 在重写基类的虚方法时,为消除隐藏基类成员的警告,需要带上new修饰符 D) 在重写基类的虚方法时,需要同时带上virtual和override修饰符 10.在C#中,以下关于抽象类的叙述中错误的是【】。 A) 抽象类可以包含抽象方法B) 含有抽象方法的类一定是抽象类

实训-继承与接口2

实训继承与接口 2 一、实训目标 理解对象的上转型对象,以及多态的目的和意义,掌握多态的常用形式。 理解抽象类的意义和实际应用的一般模式,熟练掌握抽象类和抽象方法的定义以及抽象类的继承,尤其是子类是非抽象类的情况。 二、实训内容 1、请按模板要求,将【代码】替换为Java程序代码。 Parent.java abstract class Parent{ abstract void grow(); } Son.java class Son extends Parent{ void grow(){ System. out .println( "son: 我比父亲成长条件好一点!" ); // 重写grow ()方法,输出”son: 我比父亲成长条件好一点! ” } void play(){ System. out .println(" 我会踢球" ); } } Daughter.java class Daughter extends Parent{ void grow(){ System. out .println( "daughter: 我比父亲成长条件好很多!" ); // 重写grow ()方法,输出” daughter: 我比父亲成长条件好很多! ” } void dance(){ System. out .println(" 我会跳舞" ); } MyTest.java public class MyTest { public static void main(String[] args ) { Parent p=new Son(); // 将p设为为子类Son的上转型对象 }

类继承与接口(一)

实验9 类继承与接口(一) 一、实验目的和要求 1. 掌握Java类的继承特点,包括子类声明、对象创建等。 2. 掌握域的继承与隐藏的特点。 3. 掌握方法的继承与重写的特点。 二、实验内容 1. 程序阅读与分析 2. 程序填空:按照需求将代码空缺处补齐。 3. 成员的访问权限 三、实验步骤 1. 程序阅读与分析 执行类ConstructorChain, 请写出输出结果, 并分析出现该结果的原因。提示:参考构造方法链。 class ConstructorChain{ p ublic static void main(String[] args){ new Son(); } } class Grandpa{ Grandpa(){ S ystem.out.println("Grandpa"); } } class Father extends Grandpa{ Father(){ S ystem.out.println("father"); } } class Son extends Father { S on(){ S ystem.out.println("son"); } }

(1) 运行结果: (2) 分析继承链上各个类构造方法的调用次序: 分析是否是超类构造方法调用在前: Son();Father();Grandpa(); 沿着继承链从子类开始一直到object为止 (2)在命令行上键入java –verbose ConstructorChain, 并回车, 观察各个类的加载次序. 各个类的加载次序是: 分析是否超类先加载: 各个类的加载顺序依次是:class Grandpa->class Father extends Grandpa->class Son extends Father 是,在加载某个类的时候,如果它的某个超类还没有被加载,那么必须首先加载这个超类;继承链上加载超类的顺序是:从object类开始知道当前类。就是继承链上接近object的超类,越优先被加载;默认情况下,同一个类仅需加载一次,既不会重复多次加载同一个类。 2.程序填空。按照以下需求将代码空缺处补齐: 类的继承 ?需求分析: ?校务管理系统,设计类来描述系统中的两个角色:教师与学生 ?public class Teacher ?public class Student ?抽取共性 ?public class Person ?考虑在Person中设计教师与学生的公有域 已知部分代码设计如下

实验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.wendangku.net/doc/b94698418.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.wendangku.net/doc/b94698418.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;

相关文档
相关文档 最新文档