java继承与接口 实验报告

合集下载

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

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

实验五继承和接口(实验报告)一、目的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();}}六、实验小结。

继承与接口实验报告

继承与接口实验报告

继承与接口实验报告
实验目的:掌握Java中继承与接口的基本概念和使用方法,能够灵活运用继承和接口设计类和实现多态。

实验环境:Java语言编译器和JDK环境。

实验步骤:
1. 创建一个父类Animal,包含属性name和age,以及方法eat()和sleep()。

2. 创建两个子类Cat和Dog,继承自Animal类。

在子类中重写父类的方法,并添加特有的方法和属性。

3. 创建一个接口Jumpable,包含方法jump()。

4. 在Cat类中实现Jumpable接口,使其具有跳跃的能力。

5. 创建一个测试类Test,通过实例化Cat和Dog对象,调用它们的方法进行测试。

实验结果:
1. 父类Animal成功创建,子类Cat和Dog成功继承父类,并添加特有的方法和属性。

2. 接口Jumpable成功创建,并被Cat类实现。

3. 测试类Test成功实例化Cat和Dog对象,并调用它们的方法进行测试。

实验结论:
1. 继承是Java中实现代码重用的重要手段,通过继承可以快速创建具有相似特性的子类。

2. 接口是Java中实现多态的重要手段,通过接口可以使类具有更多的行为特性。

3. 在实际开发中,应根据需求灵活运用继承和接口,设计出合理的类结构和实现多态的方式。

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) {

Java实验报告继承、多态、接口和异常处理

Java实验报告继承、多态、接口和异常处理

Java实验报告继承、多态、接⼝和异常处理实验5 继承、多态、接⼝和异常处理⼀、实验⽬的1、掌握Java的类和对象的声明和使⽤⽅法;2、掌握Java的类的继承和实现⽅法;3、掌握多态性在类的继承中的运⽤;4、掌握接⼝的定义与使⽤;5、掌握基本异常的处理机制;6、熟悉try语句与catch语句的搭配使⽤;7、了解有异常处理与没有异常处理的差别;8、多重catch语句的使⽤;9、使⽤Throws声明异常和Throw抛出异常。

⼆、实验环境1、PC微机;2、DOS操作系统或 Windows 操作系统;3、Java sdk程序开发环境、eclipse集成环境。

三、实验内容1. 设计三个类,分别是学⽣类Student,本科⽣类UnderGraduate,研究⽣类Postjgraduate,其中Student类是⼀个抽象类,它包含学⽣的基本信息如姓名、所学课程、课程成绩等,⽽Undergraduate类和Postgraduate类都是Student类的⼦类,这两个类计算课程成绩等级的⽅法有所不同,如下表所⽰。

假设某班级⾥既有研究⽣⼜有本科⽣,编写程序统计出全班学⽣2. 和Mobilephone具体实现,并设计⼀个应⽤程序类来使⽤这些类。

3.要求设计⼀个GUI图形窗⼝程序,该程序让⽤户输⼊⼀个星期中的任意⼀天的数字1-7,然后输出该数字所对应的是星期⼏。

四、实验步骤实验内容⼀1.建⽴package experiment5_1,其最终⽬录结构如下:2.建⽴Student类:package experiment5_1;public abstract class Student {final static int CourseNo = 3;String name;String type;int[] courses;String courseGrade;public Student(String name) {/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html = name; courses = new int[CourseNo];courseGrade = "" ;}public abstract void calculateGrade();public String getName( ) {return name;}public String getType( ) {return type ;}public String getCourseGrade( ) {return courseGrade;}public int getCourseScore(int courseNumber) {return courses[courseNumber];}public void setName(String name) {/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html = name;}public void setType(String type) {this.type = type;}public void setCourseScore(int courseNumber, int courseScore) { //按课程索引号设置课程成绩this.courses[courseNumber] = courseScore ;}}3.建⽴外部类(1)研究⽣类Postjgraduatepackage experiment5_1;public class postgraduate extends Student {public postgraduate(String name) {super(name);type = "研究⽣";}public void calculateGrade() {// TODO Auto-generated method stubint total = 0;double average = 0;for (int i = 0; i < CourseNo; i++) {total += courses[i];};average = total / CourseNo;if (average>=90&&average<100) courseGrade = "优秀"; else if (average>=80&&average<90) courseGrade = "良好"; else if (average>=70&&average<80) courseGrade = "⼀般"; else if (average>=60&&average<70) courseGrade = "及格"; else courseGrade = "不及格";}}(2)本科⽣类UnderGraduatepackage experiment5_1;public class undergraduate extends Student {public undergraduate(String name ) {super(name);type = "本科⽣";}public void calculateGrade() {int total = 0;double average = 0;for (int i = 0; i < CourseNo; i++) {total += getCourseScore(i) ;};average = total / CourseNo;if (average>=80&&average<100) courseGrade = "优秀"; else if (average>=70&&average<80) courseGrade = "良好"; else if (average>=60&&average<70) courseGrade = "⼀般"; else if (average>=50&&average<60) courseGrade = "及格"; else courseGrade = "不及格";}}4.编写代码测试函数package experiment5_1;public class polymorphism {public static void main(String[] args) {Student[] students = new Student[5];students[0] = new undergraduate("陈建平");students[1] = new undergraduate("鲁向东");students[2] = new postgraduate("匡晓华");students[3] = new undergraduate("周丽娜");students[4] = new postgraduate("梁欣欣");for (int i=0; i<5 ;i++) {students[i].setCourseScore(0,87);students[i].setCourseScore(1,90);students[i].setCourseScore(2,78);}for (int i=0; i<5 ;i++) {students[i].calculateGrade();}System.out.println("姓名" + " 类型" +" 成绩");System.out.println("-----------------------");for (int i=0; i<5 ;i++) {System.out.println(students[i].getName( )+" "+students[i].getType( )+" "+students[i].getCourseGrade( ));}}}实验内容⼆1.建⽴package experiment5_2,其最终⽬录结构如下:2.写接⼝Soundable代码:package experiment5_2;public interface Soundable {public void increaseV olume( );public void decreaseV olume( );public void stopSound( );public void playSound( );}3.创建三个类Radio、Walkman和Mobilephone具体实现,分别添加代码:// Mobilephone类package experiment5_2;class Mobilephone implements Soundable{public void increaseV olume( ) {System.out.println("增⼤⼿机⾳量");}public void decreaseV olume( ) {System.out.println("减⼩⼿机⾳量");}public void stopSound( ) {System.out.println("关闭⼿机");}public void playSound( ) {System.out.println("⼿机发出来电铃声");}}// Walkman类package experiment5_2;class Walkman implements Soundable { public void increaseV olume( ) { System.out.println("增⼤随声听⾳量"); }public void decreaseV olume( ) { System.out.println("减⼩随声听⾳量"); }public void stopSound( ) {System.out.println("关闭随声听");}public void playSound( ) {System.out.println("随声听发出⾳乐"); }}// Radio类package experiment5_2;class Radio implements Soundable{ public void increaseV olume( ) { System.out.println("增⼤收⾳机⾳量"); }public void decreaseV olume( ) { System.out.println("减⼩收⾳机⾳量"); }public void stopSound( ) {System.out.println("关闭收⾳机");}public void playSound( ) {System.out.println("收⾳机播放⼴播"); }}4.创建people类及编写测试代码://People类package experiment5_2;class People {public void listen(Soundable s) {s.playSound( );}}//测试代码package experiment5_2;import java.util.Scanner;public class InterfaceTest {public static void main(String[] args) {int i;People sportsman = new People( );Scanner scanner = new Scanner(System.in);Soundable[] soundDevice = new Soundable[3];//往声⾳设备数组中放⼊能发声的设备soundDevice[0] = new Radio( );soundDevice[1] = new Walkman( );soundDevice[2] = new Mobilephone();System.out.println("你想听什么? 请输⼊选择:0-收⾳机1-随声听2-⼿机");i = scanner.nextInt( );//开始听声⾳sportsman.listen(soundDevice[i]);soundDevice[i].increaseV olume( );soundDevice[i].stopSound();scanner.close();}}实验内容三1.建⽴package experiment5_3,其最终⽬录结构如下package experiment5_3;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class DateTransf extends JFrame implements KeyListener{/****/private static final long serialVersionUID = 1L;private static DateTransf frm;private static JTextField txt;private static JTextField data;DateTransf() {setTitle("数字与星期转换");setLocation(700, 300);setSize(400,130);}public static void main(String[] args) {frm = new DateTransf();frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frm.setLayout(new GridLayout(2,2));txt = new JTextField(12);data = new JTextField(12);JLabel lable1 = new JLabel("输⼊数字:");JLabel lable2 = new JLabel("星期⼏:");frm.add(lable1);txt.addKeyListener(frm);frm.add(txt);frm.add(lable2);frm.add(data);frm.setVisible(true);}public void keyPressed(KeyEvent e) {if (e.getSource() == txt) {if (e.getKeyCode() == KeyEvent.VK_ENTER) // 判断按下的键是否是回车键{try {int number = Integer.parseInt(txt.getText());switch (number) {case 1:data.setText("Mon");break;case 2:data.setText("Tue");break;case 3:data.setText("Wen");break;case 4:data.setText("Thu");break;case 5:data.setText("Fri");break;case 6:data.setText("Sat");break;case 7:data.setText("Sun");break;default:JOptionPane.showMessageDialog(null, "您输⼊的数字不是1~7","⽆效⽇期",/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html RMATION_MESSAGE); break;}}catch (Exception e1) {// TODO: handle exceptionJOptionPane.showMessageDialog(null, "您输⼊的不是整数","⽆效⽇期",/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html RMA TION_MESSAGE); }}}}public void keyReleased(KeyEvent e) {}public void keyTyped(KeyEvent e) {}}2.编译运⾏五、实验结果●实验内容⼀结果:●实验内容⼆结果:●实验内容三结果:六、实验⼩结1.这次实验的内容⽐较多,需要掌握Java的类和对象的声明和使⽤⽅法、Java的类的继承和实现⽅法、多态性在类的继承中的运⽤、接⼝的定义与使⽤、基本异常的处理机制、try语句与catch语句的搭配使⽤等等;2. 在实验过程中,重点是要区分好实例和类,灵活掌握类的调⽤。

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。

Java实验报告四继承与接口

Java实验报告四继承与接口

南昌航空大学实验报告2019 年 4 月 4 日课程名称:Java语言程序设计A 实验名称:继承与接口班级:学生姓名:学号:指导教师评定:签名:一、实验目的1.掌握Java语言的类的继承的概念。

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

3.掌握Java语言中接口的使用4.掌握eclipse集成开发环境的使用二、实验内容(1)定义一Person类,该类具有属性人名、年龄、身份证号等信息以及将属性信息作为字符串返回的方法。

(2)定义一Student类,让该类继承Person类,该类除了具有属性人名、年龄、身份证号等信息以外还有学号,所在学校等信息;该类也具有将属性信息作为字符串返回的方法。

(3)编写测试类,测试这两个类三、实验过程实验代码如下:package shiyan;class Person{ //定义Person类private String name;private int age;private String idno;public Person() {}public Person(String name,int age,String idno) {=name;this.age=age;this.idno=idno;}public String getName() { //取得name属性return name;}public void setName(String name) { //设置name属性=name;}public int getAge() { //取得age属性return age;}public void setAge(int age) { //设置age属性this.age=age;}public String getIdno() { //取得idno属性return idno;}public void setIdno(String idno) { //设置idno属性this.idno=idno;}public String getInfo() { //取得信息抽象方法return" 姓名: "+getName()+" 年龄: "+getAge()+" 身份证号:"+getIdno();}}class Student1 extends Person { //Student1是Person的子类private String school; //定义两个私有属性private int sNo;public String getSchool() { //取得school属性return school;}public void setSchool(String school) { //设置school属性this.school=school;}public int getSNo() { //取得sNo属性return sNo;}public void setSNo(int sNo) { //设置sNo属性this.sNo=sNo;}public String getInfo() { //取得信息抽象方法return" 姓名: "+getName()+" 年龄: "+getAge()+" 身份证号:"+getIdno()+" 学校: "+getSchool()+" 学号: "+getSNo();}}public class Detect { //测试类public static void main(String[] args) {Person p=new Person("王五",20,"362204************"); //实例化Person对象System.out.println(p.getInfo()); //输出P的信息Student1 s=new Student1(); //实例化Student1对象s.setName("和二");s.setAge(20);s.setIdno("362204************");s.setSchool("南昌航空大学");s.setSNo(10001);System.out.println(s.getInfo()); //输出S的信息}}四、实验结果五、实验分析JAVA的继承与C++类似,掌握了继承,便可以通过继承父类方法增强功能的灵活性,而且可以减少代码量。

java类的继承实验报告

java类的继承实验报告

java类的继承实验报告Java类的继承实验报告引言:在面向对象的编程语言中,继承是一种重要的概念。

Java作为一种面向对象的编程语言,也提供了类的继承机制。

本实验旨在通过编写Java程序,深入理解和掌握Java类的继承。

实验目的:1. 理解继承的概念和原理;2. 掌握Java中类的继承的语法和用法;3. 实践继承的实际应用。

实验过程:1. 创建父类和子类在实验中,我们首先创建一个父类和一个子类。

父类可以是一个基本的类,子类则继承了父类的属性和方法。

这样,子类就可以在不改变父类的基础上,扩展自己的功能。

2. 继承的语法和用法Java中,使用关键字"extends"来实现类的继承。

子类通过继承父类,可以获得父类的属性和方法,并且可以在子类中添加新的属性和方法。

在实验中,我们可以通过创建子类对象,并调用继承自父类的方法来验证继承的正确性。

3. 方法的重写在继承中,子类可以重写父类的方法。

这样,当子类调用该方法时,实际上执行的是子类重写后的方法。

通过方法的重写,我们可以实现多态性的效果。

4. 实际应用在实验中,我们可以选择一个具体的应用场景,例如动物类的继承。

我们可以创建一个父类Animal,包含基本的属性和方法,然后创建子类Dog和Cat,分别继承Animal类,并添加自己的特有属性和方法。

通过这个实例,我们可以更好地理解继承的实际应用。

实验结果:通过实验,我们成功地创建了父类和子类,并验证了继承的正确性。

我们还成功地重写了父类的方法,实现了多态性的效果。

最后,我们还通过实际应用的例子,更好地理解了继承的实际应用。

实验总结:通过本次实验,我们深入理解和掌握了Java类的继承。

继承是面向对象编程中的重要概念,通过继承,我们可以实现代码的重用和扩展。

在实际应用中,继承也可以帮助我们更好地组织代码,提高代码的可读性和可维护性。

然而,继承也有一些限制和注意事项。

首先,Java中只支持单继承,即一个子类只能继承一个父类。

java 继承与接口 实验三

java 继承与接口 实验三

信息与计算科学专业实验报告public class Example3.1{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();}}实验结果:Company company=new Company(employee);System.out.println("公司年工资总额:"+company.salariesPay()); }}实验结果:(3)代码:interface ComputerWeight{public double computerWeight();}class Television implements ComputerWeight{public double computerWeight(){return 155;}}class Computer implements ComputerWeight{public double computerWeight(){return 105;}}class WashMachine implements ComputerWeightfor(int i=0;i<goodsOne.length;i++){if(i%3==0)goodsOne[i]=new Television();else if(i%3==1)goodsOne[i]=new Computer();else if(i%3==2)goodsOne[i]=new WashMachine();}for(int i=0;i<goodsTwo.length;i++){if(i%3==0)goodsTwo[i]=new Television();else if(i%3==1)goodsTwo[i]=new Computer();else if(i%3==2)goodsTwo[i]=new WashMachine();}Car bigcar=new Car(goodsOne);System.out.println("大货车装载的货物重量:"+bigcar.getTotalWeights()); Car smallcar=new Car(goodsTwo);System.out.println("小货车装载的货物重量:"+smallcar.getTotalWeights()); }}实验结果:。

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); } }

02实验二--继承和接口报告模板 (1)

02实验二--继承和接口报告模板 (1)
its get method is named isFilled */
publicbooleanisFilled() {
returnfilled;
}
/** Set a new filled */
publicvoidsetFilled(booleanfilled) {
this.filled= filled;
publicString getColor() {
returncolor;
}
/** Set a new color */
publicvoidsetColor(String color) {
this.color= color;
}
/** Return filled. Since filled is boolean,
2.用Eclipse工具编辑、编译、执行Java程序。
3.程序编写尽量规范化。在程序中添加适当的注释;类的命名、Field的命名、方法的命名应符合命名规则。
4.每个类都包含无参和有参的构造器。子类的构造器调用父类的构造器
实验内容
实验内容:
1.编写类之间具有继承关系的程序。
2.编写有抽象类和一般类的程序。
重写toString()方法返回三角形的字符串描述,返回值如:Triangle:side1=1.0,side2=2.0,side3=2.1
实验要求:
提供Triangle类的UML设计
实现该类的Java代码实现Triangle.java,并编写一个测试程序TestTriangle.java,在测试程序中创建一个Triangle对象,其边长分别为1.0,1.5和1.0,颜色为yellow,filled为true,然后显示其面积、周长、颜色以及是否被填充。

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实现部分多继承功能的体现。

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

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

实验十类继承与接口(二)课程名称:面向对象程序设计实验项目名称:实验十类继承与接口(二)学生姓名:专业:学号:实验地点:实验日期:年月【实验目的】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;protected int j;}class Bbb extends Aaa{Bbb(){i = 10;j = 99;}}是否出错:是出错原因(如果出错):private只能在自己的类中使用class Aaa{protected int i;protected int j;}class Bbb extends Aaa{Bbb(){i = 10;j = 99;}}(5)编译下面程序,程序是否出错class A{int i =100;}class B extends A{int i =10000;public static void main(String[] args){a)是否出错:是b)出错原因(如果出错):不能在静态方法使用this superclass A{int i =100;}class B extends A{int i =10000;public void main(String[] args){}}c)如果将上述类B的int i =10000改为static int i =10000;类A的int i =100改为staticint i =100;程序是否出错?是出错原因(如果出错):不能在静态方法使用this superclass A{int i =100;}class B extends A{int i =10000;public void main(String[] args){}}d)如果将类B的main方法改为public static void main(String[] args){B b =new B();}程序是否出错? 是出错原因(如果出错):不能强制将in类型改为A如果没出错, 给出结果:上面的的含义:的含义:(6)class Aaa{int i;public void Aaa(int a){ i=a;}public static void main(String[] args){Aaa a = new Aaa(10);}}是否出错:是出错原因(如果出错):构造器没有返回class Aaa{int i;public Aaa(int a){ i=a;}public static void main(String[] args){Aaa a = new Aaa(10);}}(7)class Aaa{public static void main(String[] args){int[][] a=new int[5][];for( int i=0;i<;i++)for(int j=0;i<a[i].length;j++){a[i][j]= (int)(100*());}}}是否出错:出错原因(如果出错):for(int j=0;i<a[i].length;j++)出现无限循环class Aaa{public static void main(String[] args){int[][] a=new int[5][5];for( int i=0;i<;i++)for(int j=0;j<a[i].length;j++){a[i][j]= (int)(100*());}}}(8)class A{int abc(int i){return 1;} 程序分析设计题下面各个设计要放在各自的包中。

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

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

浙江大学城市学院实验报告课程名称:面向对象程序设计实验项目名称:类继承与接口(三)学生姓名:专业:软件工程学号:实验地点:实验日期:年月日【实验目的】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的含义(即它们都对应哪个类中定义的变量):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; //本语句含义是: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对应Bbb中的isuper.i对应Aaa中的i3.对以下程序,给出执行Bbb的结果,并分析Bbb中main方法中a.show(1), b.show(1),c.show(1)的结果。

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);}}五、实验结果与分析(含程序、数据记录及分析和实验总结等):六:思考题:实验成绩:。

继承和接口的实验报告

继承和接口的实验报告

深圳大学实验报告课程名称: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个),请编写程序统计全班学生的成绩等级并显示出来。

类继承与接口(二)实验报告

类继承与接口(二)实验报告
Bbb(){ }
}
是否出错:错,
出错原因(如果出错):
Bbb(){ }中没有调用Aaa中的构造器,改为Bbb(){super(10);}
4.class Aaa{
private int i;
protected int j;
}
class Bbb extends Aaa{
Bbb(){
i = 10;
j = 99;
int i;
public void Aaa(int a){ i=a;}
public static void main(String[] args){
Aaa a = new Aaa(10);
}
}
是否出错:是
出错原因(如果出错):
public void Aaa(int a){ i=a;}应为构造器,不是方法,改为public Aaa(int a){ i=a;}
salaries = salaries + employee[i].earnings();
}
return salaries;
}
}
public class HardWork{
public static void main(String args[]){
Employee[] employee=new Employee[20];
public double earnings(){
return60000.0;
}
}
class WeekWorker extends Employee{
public double earnings(){
return 40000.0;
}
}
class Company{

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

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

**大学Java语言程序设计实验报告m1.sum(100,200,300);System.out.println("sum="+m1.num1+"+"+m1.num2+"+"+m1.num3+"="+m1.sum);}}问题:a、子类的sum,num1,num2分别是多少,父类的sum,num1,num2 分别是多少,如何在main中输出父类的sum,num1,num2。

子类的sum,num1,num2分别是100,200,300父类的sum,num1,num2 分别是多少0,0,0使用super调用父类的构造方法,super(sum,num1,num2)b、就这个例子,谈谈你对覆盖的理解?2.运行下面的程序,理解方法的继承。

问题:a、为什么标有.①处可以直接使用,而不需要生成Sort3的对象,然后使用该对象. sort()调用sub_sort3是sort3的子类,继承了父类的方法B、程序实现什么功能?实现对三个数从大到小排序3.运行下面的程序,理解方法的重载。

class Sort2or3{double max1,max2,max3;Sort2or3(){max1=-1;max2=-1;4.运行下面的程序,理解方法的覆盖。

class sort_Demo{int i,j,k,swap;sort_Demo(){i=j=k=swap=0;}void sort(int t1,int t2[]){ //父类中的方法用来实现升序//用选择法按升序排列for(i=0;i<t1-1;i++){k=i;for(j=i+1;j<t1;j++)if(t2[j]<t2[k]) k=j;if (k!=i){swap=t2[i];t2[i]=t2[k];t2[k]=swap;}}}} }问题:比较3和4,谈谈你对重载和重写的认识,最好可以自己举例说明子类重写方法覆盖了父类的方法,那么子类对象调用发放一定调用的是重写方法,重写方法(覆盖方法)既可以操作继承的成员变量、调用继承的方法也可以操作子类新声明的成员变量、调用新定义的其他方法,但无法操作被子类隐藏的成员变量和方法。

继承与接口实验报告

继承与接口实验报告

继承与接口实验报告实验名称:继承与接口实验实验目的:通过编写一个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程序设计继承的使用实验报告总结

java程序设计继承的使用实验报告总结

java程序设计——继承的使用实验报告总结实验是设计一个简单的动物园程序,其中包括不同类型的动物。

你可以设计一个动物(Animal)的父类,然后创建各种动物的子类,如狮子(Lion)、大象(Elephant)等。

1. 实验背景动物园程序需要管理多种动物,每种动物有各自的属性和行为。

使用继承可以有效地组织这些动物,减少代码的冗余。

2. 实验设计类的层次结构设计:javaCopy codepublic class Animal {private String name;private int age;// 构造方法和其他通用属性、方法public void eat() {System.out.println(name + " is eating.");}// 其他通用行为}public class Lion extends Animal {// 狮子特有的属性和方法}public class Elephant extends Animal {// 大象特有的属性和方法}继承的目的:通过将共同的属性和行为提取到父类 Animal 中,实现代码重用,同时在子类中可以添加特有的属性和行为。

方法的重写:javaCopy codepublic class Lion extends Animal {// 狮子特有的属性和方法@Overridepublic void eat() {System.out.println("The lion is enjoying a meal.");}}3. 代码实现javaCopy codepublic class ZooApp {public static void main(String[] args) {Lion lion = new Lion();lion.setName("Leo");lion.setAge(5);lion.eat(); // 调用被重写的eat方法Elephant elephant = new Elephant();elephant.setName("Ellie");elephant.setAge(10);elephant.eat(); // 调用父类的eat方法}}4. 实验结果程序运行结果截图:Leo is enjoying a meal.Ellie is eating.5. 实验经验和问题在实验中,通过继承,我们成功地将动物的共同属性和行为提取到父类中,实现了代码的重用。

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

应用数学学院信息与计算科学专业 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()); }
}
class Square extends Rectangle{
int lenth;
Square(int a){
super(a,a);
lenth=a;
}
double duijiaoxian(){
return Math.sqrt(2*length*length);
}
public void PrintMyWay(){
System.out.println("正方形的边长为:"
+lenth+" 正方形的面积为:"+
area()+" 正方形的周长为:"+circle()+" 正方形的对角线长为:"+duijiaoxian())
public class test {
public static void main(String[] args) {
Rectangle p;
p=new Rectangle(2,3);
p.PrintMyWay();
Square s;
s=new Square(4);
s.PrintMyWay();
}
}
四、实验结果和数据处理
三、结论
在类中定义的方法若要在主类中调用,就要定义为public方法,否则在主类中调用时会出错。

子类不能继承父类的构造函数,只能通过super调用父类的构造函数。

四、问题与讨论
问题:
在父类和子类中都定义的printMayWay()方法,为什么子类的对像只调了用子类printMayWay()方法,而没有调用父类的printMayWay()方法呢?
讨论:
因为子类的的方法会覆盖父类的方法,所以子类的对象只会调用子类的printMayWay()方法二不是调用父类的printMayWay()方法。

相关文档
最新文档