实验6 继承与接口

合集下载

Java语言程序设计实验六 类的继承(接口与包)实验报告 (2)

Java语言程序设计实验六  类的继承(接口与包)实验报告 (2)

**大学**学院Java语言程序设计实验报告System.out.println("sum="+m1.num1+"+"+m1.num2+"+"+m1.num3+"="+m1.sum);}}问题:a、子类的sum,num1,num2分别是多少,父类的sum,num1,num2 分别是多少,如何在main中输出父类的sum,num1,num2子类:sum=600,num1=100,num2=200父类:sum=0,num1=0,num2=0;b、就这个例子,谈谈你对覆盖的理解?当子类的变量与父类的变量相同时,父类的变量被隐藏,main函数自动调用子类的变量2.运行下面的程序,理解方法的继承。

class Sort3{double max1,max2,max3;Sort3(){max1=-1;max2=-1;max3=-1;}double s;if (max1<max2){ s=max1;max1=max2;max2=s; }if (max1<max3){ s=max1;max1=max3;max3=s; }if (max2<max3){ s=max2;max2=max3;max3=s; }}}class sub_Sort3 extends Sort3{void subsort(double i,double j,double k){max1=i;max2=j;max3=k;sort(); //调用父类中的方法sort() …….① } }public class Class1{public static void main (String args[]){sub_Sort3 m1 = new sub_Sort3();m1.subsort(100,200,300);System.out.println("三个数从大到小为:"+m1.max1+","+m1.max2+","+m1.max3);}}问题:a、为什么标有.①处可以直接使用,而不需要生成Sort3的对象,然后使用该对象. sort()调用因为sub_sort3继承了sort,所以sort的方法就像是在子类中直接定义一样,可以被子类直接调用 B、程序实现什么功能?三个数之间互相比较大小3.运行下面的程序,理解方法的重载。

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。

继承与接口实验

继承与接口实验

继承与接口实验实验1class People{protected double weight,height;public void speakHello(){System.out.println("yayawawa");}public void averageHeight(){height=173;System.out.println("average height:"+height);}public void averageWeight(){weight=70;System.out.println("average weight:"+weight);}}class ChinaPeople extends People{【代码1】 //重写public void speakHello()方法,要求输出类似“你好,吃了吗”这样的 //汉语信息【代码2】 //重写public void averageHeight()方法,要求输出类似//“中国人的平均身高:168.78厘米”这样的汉语信息【代码3】 //重写public void averageWeight()方法,//要求输出类似“中国人的平均体重:65公斤”这样的汉语信息public void chinaGongfu(){【代码4】//输出中国武术的信息,例如:"坐如钟,站如松,睡如弓"等}}class AmericanPeople extends People{【代码5】 //重写public void speakHello()方法,要求输出类似//“How do you do”这样的英语信息。

【代码6】 //重写public void averageHeight()方法【代码7】 //重写public void averageWeight()方法public void americanBoxing(){【代码8】//输出拳击的信息,例如,“直拳”、“钩拳”等}}class BeijingPeople extends ChinaPeople{【代码9】 //重写public void speakHello()方法,要求输出类似“您好”这样的汉语信息【代码10】 //重写public void averageHeight()方法【代码11】 //重写public void averageWeight()方法public void beijingOpera(){【代码12】//输出京剧的信息}}public class Example{public static void main(String args[]){ChinaPeople chinaPeople=new ChinaPeople();AmericanPeople americanPeople=new AmericanPeople();BeijingPeople beijingPeople=new BeijingPeople();chinaPeople.speakHello();americanPeople.speakHello();beijingPeople.speakHello();chinaPeople.averageHeight();americanPeople.averageHeight();beijingPeople.averageHeight();chinaPeople.averageWeight();americanPeople.averageWeight();beijingPeople.averageWeight();chinaPeople.chinaGongfu();americanPeople.americanBoxing();beijingPeople.beijingOpera() ;beijingPeople.chinaGongfu();}}实验2abstract class Employee{public abstract double earnings();}class YearWorker extends Employee{【代码1】//重写earnings()方法}class MonthWorker extends Employee{【代码2】//重写earnings()方法。

Java语言程序设计实验六 类的继承(接口与包)实验报告 (2)

Java语言程序设计实验六  类的继承(接口与包)实验报告 (2)
B、程序实现什么功能?
三个数之间互相比较大小
3.运行下面的程序,理解方法的重载。 class Sort2or3{
double max1,max2,max3; Sort2or3(){
max1=-1; max2=-1;
max3=-1;
} void sort(double i,double j){
double s; max1=i; max2=j; if(max1<max2){ s=max1;max1=max2;max2=s; } } void sort(double i,double j,double k){ double s; max1=i; max2=j; max3=k; if (max1<max2){ s=max1;max1=max2;max2=s; } if (max1<max3){ s=max1;max1=max3;max3=s; } if (max2<max3){ s=max2;max2=max3;max3=s; } } } public class Class1{ public static void main (String args[]){ Sort2or3 m1 = new Sort2or3(); m1.sort(100,200); System.out.println("两个数从大到小为:"+m1.max1+","+m1.max2); m1.sort(50,150,100); System.out.println("三个数从大到小为: "+m1.max1+","+m1.max2+","+m1.max3); } }

java 继承与接口 实验报告

java    继承与接口  实验报告

应用数学学院专业1 班、学号_ _姓名___ __ 教师评定_________________实验题目继承与接口一、实验目的与要求实验目的:1、掌握类的继承关系。

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

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

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

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

二、实验方案编辑该实验源程序如下:■LISTEN.javainterface Printx{ //定义接口public abstract void printMyWay();}class Rectangle implements Printx{ //矩形类double a,b;Rectangle(double a,double b){this.a=a;this.b=b;}public double getArea(){return a*b;}public double getLength(){return (a+b)*2.0;}public void printMyWay(){System.out.println("该矩形的长a="+a+"宽b="+b);System.out.println("面积s="+getArea());System.out.println("周长l="+getLength());}}class Square extends Rectangle{ //正方形类double c;Square(double a,double b){super(a,b);}public double getDiagonal(){c=Math.sqrt(a*a+b*b);return c;}public void printMyWay(){System.out.println("该矩形的长a="+a+"宽b="+b);System.out.println("面积s="+getArea());System.out.println("周长l="+getLength());System.out.println("对角线d="+getDiagonal());}}public class LISTEN {public static void main(String[] args) {Rectangle rectangle;Square square;rectangle=new Rectangle(11,5);square=new Square(5,5);rectangle.printMyWay();square.printMyWay();}}三、实验结果和数据处理运行上述源程序,可得如下运行结果:1、矩形长a=11 宽b=52、矩形长a=5 宽b=5四、结论接口是Java实现部分多继承功能的体现。

Java语言程序设计实验六 类的继承(接口与包)实验报告

Java语言程序设计实验六  类的继承(接口与包)实验报告

**大学**学院Java语言程序设计实验报告7.体会教材的面向接口编程四、实验步骤:1.a.子类:sum=600,num1=100,num2=200父类:sum=0,num1=0,num2=0b.覆盖是指子类在继承父类之后,给变量名相同的参数一个新的值并在类中使用,覆盖了父类中继承下来的值。

子类重写父类的方法,要想在子类中调用超类中被覆盖掉的方法就需要用super关键字2.a.因为子类sub_Sort3继承了父类Sort3,可以直接使用父类的方法b.实现从大到小排序3.4.重载:重载指一个类里可以有多个方法具有相同的名字,但这些方法的参数必须不同。

重写:子类的方法的名字、参数个数、参数的类型和父类的方法完全相同。

子类通过方法的重写可以隐藏继承的方法。

例如class A{float a(int a,int b){return a+b;}float a(int a,int b,int c){return a+b+c;}}是重载class B{float b(int a,int b){return a+b;}}class B extends A{float b(int a,int b){return a-b;}}是重写5.class A{int x=8;void myPrint() {//父类System.out.println(x);}}class B extends A {int y=16;String s="java program!";void myPrint() {//子类System.out.println(y+" "+s);}void printAll() {myPrint();super.myPrint();}}public class Application {public static void main(String args[]) {B b=new B();b.printAll();}}6.class A{int i;float x;A(int i,float x) {this.i=i;this.x=x;}}public class test {public static A b(A a) {a.i=a.i+1;a.x=a.x+2;return a;}public static void main(String args[]) {A a=new A(2,8.0f);System.out.println("i="+a.i+" x="+a.x);a=b(a);System.out.println("i="+a.i+" x="+a.x);}}五、实验结果与分析(含程序、数据记录及分析和实验总结等):六:思考题:实验成绩:。

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

实验报告姓名学号专业班级课程名称 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);}}import java.util.*;public class Exe_1 extends Student{public Exe_1(){};public static void main(String[] args) {Scanner input=new Scanner(System.in);Exe_1 text=new Exe_1();System.out.println("请输入姓名和学号:");text.setdata(input.next(), input.nextInt());System.out.println("显示如下:");text.print();}}(2) 编译源并运行程序。

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

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

程序代码:class CollegeStudent extends Student {protected String xy;protected String bj;//此处定义新的成员变量,均为protected类型public static void main(String args[]) {Student p1 = new Student();p1.setdata("李四", 12321);p1.print();CollegeStudent s1 = new CollegeStudent();s1.setdata("张三", 12345); // 调用父类的成员方法s1.xy = "山西大学计算机学院"; // 访问本类的成员变量s1.bj = "2011级计算机科学与技术"; // 访问本类的成员变量s1.print();System.out.print(s1.xm + ", " + s1.xy + ", " + s1.bj);}}运行结果贴图:(三)了解成员方法的覆盖方式(1)编写覆盖了Object 类toString方法的一个类,并用System.out.println()输出该类的一个对象。

程序代码:class Circle {private int radius;public Circle(int radius) {this.radius=radius;}// 定义一个参数的构造方法// 对于私有成员radius进行get和set(定义getRadius()和setRadius())// 定义求面积方法area()public void setRedious(int radius){this.radius=radius;}public int getRadius(){return radius;}public double getArea(int radius){double area;area=radius*radius*Math.PI;return area;}public String toString() {return"圆半径:" + getRadius() + " 圆面积:" + getArea(radius);}}public class GetArea {public static void main(String args[]) {Circle c = new Circle(10);System.out.println("\n" + c.toString());}}运行结果贴图:(2)试着以Point类为例,尝试为Object类的clone()和equals()方法进行覆盖,Point类包含私有成员x,y,构造方法1(包含两个参数a,b),构造方法2(参数为Point p),clone方法,equals 方法,toString方法。

用TestPoint类进行测试。

程序代码:public class Point {private double x;private double y;public Point(double x, double y) {this.x= x;this.y= y;}public Point(Point p) {this.x= p.x;this.y= p.y;}protected Object clone() {Object a = new Point(x, y);return a;}public boolean equals(Object o) { // 一定是objectif (o instanceof Point) {if (x == ((Point) o).x && y == ((Point) o).y) // 转换,且转换后的真题加括号return true;elsereturn false;} elsereturn false;}public String toString() {System.out.println(super.toString());return ("x=" + x + " y=" + y);}}public class TestPoint {public static void main(String[] args) {Point a = new Point(4, 5);Point d = new Point(3, 5);Point b = new Point(a);Object c = a.clone();System.out.println(a.equals(d));System.out.println(a.equals(c));System.out.println("a " + a);System.out.println("b " + b);System.out.println("c " + c);// 因为clone定义是new的为Point,所以为Point类}}运行结果贴图:(四)this、super和super()的使用(1)程序功能:程序功能:说明this、super 和super()的用法。

程序首先定义Point(点)类,然后创建点的子类Line(线)。

最后通过TestLine类输出线段的长度。

程序中通过super(a,b)调用父类Point 的构造方法为父类的x 和y 赋值。

在子类Line 的setLine方法中,因为参数名和成员变量名相同,为给成员变量赋值,使用this 引用,告诉编译器是为当前类的成员变量赋值。

在length 和toString 方法中使用父类成员变量时,使用super 引用,告诉编译器使用的是父类的成员变量。

程序代码:class Point {protected int x, y;Point(int a, int b) {setPoint(a, b);}public void setPoint(int a, int b) {x = a;y = b;}}class Line extends Point {protected int x, y;Line(int a, int b) {super(a, b);setLine(a, b);}public void setLine(int x, int y) {this.x = x + x;this.y = y + y;}public double length() {int x1 = super.x, y1 = super.y, x2 = this.x, y2 = this.y;return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));}public String toString() {return"直线端点:[" + super.x + "," + super.y + "] [" + x + "," + y + "] 直线长度:" + this.length();}}public class Super {public static void main(String args[]) {Line line = new Line(50, 50);System.out.println("\n" + line.toString());}}运行结果贴图:(五)接口的实现与运用实验任务 :本实验的任务是设计和实现一个 Soundable 接口 , 该接口具有发声功能 , 同时还能够调节声音大小。

Soundable 接口的这些功能将会由 3 种声音设备来具体实现 , 它们分别是收音机Radio 、随身昕 Walkman 和手机 Mobilephone 。

最后还要设计一个应用程序类来使用这些实现了Soundable 接口的声音设备类。

程序运行时 , 先询问用户想听哪种设备 , 然后程序就会按照该设备的工作方式来发出声音。

相关文档
最新文档