java类的继承与多态实验报告
- 格式:doc
- 大小:52.50 KB
- 文档页数:4
实验三继承和多态一、实验目的1.熟练掌握封装性,多态性的概念。
2.熟练掌握抽象类abstract的概念。
3.熟练掌握接口interface的概念。
4.熟练包package的概念以及编译运行的方法。
二、实验内容1.编写一个Java Application程序,该程序有个点Point类,它包含横坐标x和纵坐标y 两个属性,再给Point定义两个构造方法和一个打印点坐标的方法Show。
定义一个圆Circle 类,它继承Point类(它是一个点,圆心(Center)),除此之外,还有属性半径Radius,再给圆定义2个构造方法、一个打印圆的面积的方法PrintArea和一个打印圆中心、半径的方法Show(其中显示圆心可以用super.Show()的方式)。
package实验三;public class Point {double x,y;public Point(){x=0;y=0;}public Point(double x,double y){this.x=x;this.y=y;}public String Show(){return"横坐标为:"+this.x+",纵坐标为:"+this.y;}/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubPoint a=new Point(3.0,4.0);System.out.println(a.Show());}}package实验三;public class Circle extends Point {double Radius;public Circle(){super(0,0);Radius=0;}public Circle(double x,double y,double z){super(x,y);Radius=z;}public String Show(){System.out.println("圆心的"+super.Show()+"半径为:"+Radius);return"圆心的"+super.Show()+"半径为:"+Radius;}public String PrintArea(){System.out.println("圆的面积为:"+Math.PI*Radius*Radius);return"圆的面积为:"+Math.PI*Radius*Radius;}/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubCircle a=new Circle(3,4,5);a.Show();a.PrintArea();}}2.编写一测试类,对其进行编译、运行。
《面向对象程序设计》实验报告实验六、类的继承课程代码:1H10500学分:6实验类型:实践型实验学时:4个学时实验时间:2017.11.23 实验地点:5407班级:计算机164 专业:计算机科学与技术专业学号:2016011147 姓名:林文辉一、实验目的(1)学习JAVA继承的思想(2)了解JAVA语言继承的实现二、实验内容及步骤内容:在圆柱体类Cylinder里,用一个构造方法调用另一个构造方法步骤:方案的设计与分析(类结构图。
)(1)找出对象的共同属性和行为(2)设计代表共同状态与行为的类(3)决定子类是否需要让某项行为有特定的不同的运行方式(4)寻找更多抽象化的机会(5)完成类的继承层次三、实验过程及结果实验1代码:abstract class Graphics {abstract void parameter();abstract void area();}class Rectangle extends Graphics{double h,w;Rectangle(double u,double v){h=u;w=v;}void parameter() {S ystem.out.println("矩形高度为:"+h+",矩形宽度为:"+w);}void area() {S ystem.out.println("矩形面积为:"+(h*w));}}class Circle extends Graphics{double r;String c;Circle(double u,String v){r=u;c=v;}void parameter() {System.out.println("圆半径为:"+r+",圆颜色为:"+c);}void area() {System.out.println("圆面积为:"+(Math.PI*r*r));}}class ExamAbs{public static void main(String args[]) {Rectangle rec=new Rectangle(2.0, 3.0);Circle cir=new Circle(4.0, "Red");Graphics[]g= {rec,cir};for(int i=0;i<g.length;i++) {g[i].parameter();g[i].area();}}}结果:(该部分主要记录实验过程,包括实验代码及运行结果)四、实验小结Java中提供了this关键字,this关键字总是指向调用该方法的对象。
一、实验目的:1.掌握类的继承性;2.掌握Java的多态性;二、实验内容:1复数类的加减运算能够接收不同类型的参数既可以实现复数与实数的加减、复数与复数的加减运算。
2.习题5.93.习题5.10import java.util.Scanner;class A{int f(int a,int c){int m=a+c;return m;}int g(int b,int d){int n=b+d;return n;}int F(int a,int c){int m=a-c;return m;}int G(int b,int d){int n=b-d;return n;}}class B extends A{double f(double a,double c){double m=a+c;return m;}double g(double b,double d){double n=b+d;return n;}double F(double a,double c){double m=a-c;return m;}double G(double b,double d){double n=b-d;return n;}}public class fushu_1{public static void main(String args[]){B b=new B();System.out.println("选择int型请按1,选择double型请按2:");Scanner reader=new Scanner(System.in);int x=reader.nextInt();if(1==x){System.out.println("请输入两数据的实部或一个实部一个整数:");int p=reader.nextInt();int q=reader.nextInt();System.out.println("请输入两数据的虚部若为整数则输入0:");int j=reader.nextInt();int k=reader.nextInt();if(0!=k)System.out.println("你输入的数分别为:"+p+"+"+j+"i"+" "+q+"+"+k+"i");System.out.println("你输入的数分别为:"+p+"+"+j+" "+q);System.out.println("和为:"+b.f(p,q)+"+"+b.g(j,k)+"i");System.out.println("差为:"+b.F(p,q)+"-"+b.G(j,k)+"i");}if(2==x){System.out.println("请输入两数据的实部或一个实部一个整数:");double p=reader.nextDouble();double q=reader.nextDouble();System.out.println("请输入两数据的虚部若为整数则输入0:");double j=reader.nextDouble();double k=reader.nextDouble();if(0!=k)System.out.println("你输入的数分别为:"+p+"+"+j+"i"+" "+q+"+"+k+"i");if(0==k)System.out.println("你输入的数分别为:"+p+"+"+j+”i”+" "+q);System.out.println("和为:"+b.f(p,q)+"+"+b.g(j,k)+"i");System.out.println("差为:"+b.F(p,q)+"-"+b.G(j,k)+"i");}}}运行结果为:5.9 class A{char ch='a';char ch1='z';int m=(int)ch;int n=(int)ch1;void f(){for(int i=m;i<=n;i++){char ch2=(char)i;System.out.print(ch2+" ");}}}class B extends A{char GL='α';char GL1='ω';int p=(int)GL;int q=(int)GL1;void g(){for(int j=p;j<=q;j++){char GL2=(char)j;System.out.print(GL2+" ");}}}public class file5_9{public static void main(String args[]){B a=new B();System.out.println("英文字母为:");a.f();System.out.println();System.out.println("希腊字母为:");a.g();System.out.println();}}运行结果:5.10 import java.util.Scanner;class A{public int f(int a,int b){int m=0;for(int i=1;i<=a;i++){if(0==a%i&&0==b%i)m=i;}return m;}}class B extends A{public int f(int a,int b){int n=super.f(a,b);return a*b/n;}}//import java.util.Scanner;public class file5_10{public static void main(String args[]){A a=new A();B b=new B();Scanner reader=new Scanner(System.in);System.out .println("******注意输入的p和q不能小于或等于0******\n");System.out.println("请输入第一个数字p并按回车键");int p=reader.nextInt();while(p<=0){System.out.println("p不能小于或等于0,请从新输入:");p=reader.nextInt();}System.out.println("请输入第二个数字q并按回车键");int q=reader.nextInt();while(q<=0){System.out.println("q不能小于或等于0,请从新输入:");q=reader.nextInt();}//int p=5;//int q=6;System.out.println(p+"和"+q+"的最小公倍数为:");System.out.println(b.f(p,q));System.out.println(p+"和"+q+"的最大公约数为:"+"\n"+a.f(p,q));}}运行结果:。
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作为一门面向对象的编程语言,也支持类的继承。
本篇实验报告将介绍Java类的继承的基本概念、语法以及实际应用。
一、继承的基本概念继承是指一个类可以派生出另一个类,被派生出的类称为子类,派生出子类的类称为父类。
子类可以继承父类的属性和方法,并且可以在此基础上进行扩展或修改。
继承的关系可以形成类的层次结构,使得代码的复用性和可维护性得到提高。
二、继承的语法在Java中,使用关键字"extends"来实现类的继承关系。
子类通过继承父类来获得父类的属性和方法。
语法格式如下:```javaclass 子类名 extends 父类名 {// 子类的成员变量和方法}```在子类中可以重写父类的方法,以实现自己的逻辑。
使用关键字"super"可以调用父类的构造方法和成员变量。
三、继承的实际应用1. 代码复用继承的一个主要优势是可以实现代码的复用。
子类可以继承父类的属性和方法,避免了重复编写相同的代码。
例如,假设有一个父类"Animal",子类"Dog"和"Cat"可以继承父类的一些通用属性和方法,如"eat()"和"sleep()"。
2. 多态性继承也为多态性的实现提供了基础。
多态性是指一个对象可以根据不同的类型表现出不同的行为。
通过继承,可以将不同的子类对象赋给父类引用,实现对不同子类对象的统一操作。
例如,有一个父类"Shape",子类"Circle"和"Rectangle"可以继承父类的方法"draw()",并在自己的类中实现具体的绘制逻辑。
通过将子类对象赋给父类引用,可以统一调用"draw()"方法,实现对不同形状的绘制。
类的继承与多态性实验报告目录1.介绍2.什么是多态3.多态在Java中的技术基础4.示例5.多态的好处6.总结介绍之前的文章介绍过类的封装性和继承性,现在是时候聊聊面向对象编程的三大特性之一的最后一个类的多态性了。
多态的基础是继承(包括了接口的实现)和方法的覆盖。
什么是多态多态对应的英文单词是polymorphism,百度翻译给出的翻译是:n.多型现象,多态性; 多机组合形式;按字面意思就是多种状态、形态、姿态等等,潜台词就是某个东西具有多种状态、形态、姿态等等。
那是什么东西呢?在面向对象的编程语言里面(当然就包括Java了)就是某个方法或函数。
那方法的多种状态、形态、姿态有是个什么意思呢?这其实是指同一个方法具有多个方法体,就是方法的实现。
而方法的相同与否是由方法签名决定的。
所以,多态其实本质上是指同一个类的同一个方法却具有不同的行为特征。
状态、形态、姿态指的就是行为特征。
多态在Java中的技术基础然而,在Java中,同一个类里面是不可能存在两个签名相同而实现不同的方法的,否则的话会导致无法判断该执行哪个方法,因此在编译时就会报错。
所以,肯定是在两个类中才有可能存在两个签名相同而实现不同的方法,一个实现在这个类,另一个实现在另一个类。
而如果这两个类毫无瓜葛,那么肯定就与多态的本质(同一个类的同一个方法却具有不同的行为特征)自相矛盾了。
所以,这两个类肯定是有某种联系的。
我们再想想,什么概念是能够让两个不同的类却又能称为同一个类的?答案就是类的继承/扩展,就是现实中的“某东西是某类东西”的概念,就是“具体和抽象”的思想。
比如,男人是人,女人也是人,男人类和女人类就借助于人类建立了某种联系,而人类具有的某个行为在男人类和女人类中是有着不同体现的,比如人类的吃饭这个行为,男人类的体现是狼吞虎咽,女人类的体现是细嚼慢咽。
例子不是很恰当,但意思就是这么个意思。
所以说,Java里面多态的技术基础就是方法的覆盖,当然,在Java中覆盖不仅仅发生在类的继承/扩展上,还可能发生在接口的实现上。
实验三继承和多态一、实验目的1.熟练掌握封装性,多态性的概念。
2.熟练掌握抽象类abstract的概念。
3.熟练掌握接口interface的概念。
4.熟练包package的概念以及编译运行的方法。
二、实验内容1.编写一个Java Application程序,该程序有个点Point类,它包含横坐标x和纵坐标y 两个属性,再给Point定义两个构造方法和一个打印点坐标的方法Show。
定义一个圆Circle 类,它继承Point类(它是一个点,圆心(Center)),除此之外,还有属性半径Radius,再给圆定义2个构造方法、一个打印圆的面积的方法PrintArea和一个打印圆中心、半径的方法Show(其中显示圆心可以用super.Show()的方式)。
编写一测试类,对其进行编译、运行。
结果如何?如去掉语句“super.Show();”,再看看运行结果。
理解程序中重载和多态性的运用。
2.完成以下步骤要求:(1)设计一个表示二维平面上点的类Point,包含有表示坐标位置的protected类型的成员变量x和y,获取和设置x和y值的public方法。
(2)设计一个表示二维平面上圆的类Circle,它继承自类Point,还包含有表示圆半径的protected类型的成员变量r,获取和设置r值的public方法、计算圆面积的public 方法。
(3)设计一个表示圆柱体的类Cylinder,它继承自类Circle,还包含有表示圆柱体高的protected类型的成员变量h、获取和设置h值的public方法、计算圆柱体体积的public 方法。
(4)建立若干个Cylinder对象,输出其轴心位置坐标、半径、高及其体积的值。
3.学校中有老师和学生两类人,而在职研究生既是老师又是学生,对学生的管理和对教师的管理在他们身上都有体现。
(1)设计两个信息管理接口StudentInterface和TeacherInterfaceo其中,StudentInterface接口包括setFee方法和getFee方法,分别用于设置和获取学生的学费;TeacherInterface接口包括setPay方法和getPay方法,分别用于设置和获取教师的工资。
实验四继承性和多态一、实验目的:熟悉JA V A中的继承性和多态性。
掌握子类的定义及用法,继承机制中的隐藏与覆盖。
子类的构造方法的用法,对象的上转型对象,抽象类与抽象方法等。
二、实验要求:1.根据下面的要求,编写Java应用程序实现:编写程序模拟中国人、美国人是人、北京人是中国人。
除主类外,程序中还有4个类:People、ChinaPeople、AmericanPeople和BeijingPeople类。
要求如下:●People类有权限是protected的double型成员变量height和weight,以及public voidspeakHello()、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()方法。
要求ChinaPeople重写父类的public void speakHello()、public void averageHeight()和public void averageWeight()方法。
实验名称 java类的继承和多态实验名称 Java类的继承和多态一、实验目的1、理解Java类的继承和多态的概念2、掌握类的继承机制的实现3、掌握方法的重载,以及多态的实现。
二、实验要求1、本实验属于验证型和设计型实验。
需要根据已给的源程序运行结果,并结合问题进行新的设计;2、对实验过程中提出的问题进行解答;3、完成实验报告。
三、实验内容与过程1、上机运行下面的程序,并回答下面的问题。
public class ClassOne{int num=100;public void compute(){num-=50;}public static void main(String args[]){ClassOne one=new ClassOne();ClassTwo two=new ClassTwo();System.out.println(“num of ClassTwo:”+two.num);System.out.println(“num of ClassOne:”+two.getNum());pute();System.out.println(“num of ClassTwo:”+two.num);System.out.println(“num of ClassOne:”+two.getNum());}}class ClassTwo extends ClassOne{int num=0;public void plus(){num+=50;}public int getNum(){return super.num;}}问题:(1) 请指出Java面向对象编程中三个主要特性。
(2) Java中的继承机制是什么,(3) 请指出程序中关键字super的作用。
2、运行下面的程序,回答问题。
class Monkey{private int age=10;void speak(){System.out.println("I am monkey.");}}class People extends Monkey{void computer(int a,int b){int c=a*b;System.out.println("I can computer "+a+"*"+b+"="+c);}void speak(){System.out.println("I am human.");}}public class Excise7_2{public static void main(String args[]){Monkey monkey=new People();monkey.speak();puter(10,12);People people=(People)monkey;puter(10,12);}}问题:1、上面的程序有一处错误,请改正使其能正确运行。
Java继承与多态实验报告.doc
Java的继承与多态实验报告
本报告致力于分析Java继承与多态的概念、原理和作用,以及相关实验过程及其结果。
继承,又称为分类,是Java面向对象程序设计语言中定义类之间关系的重要技术。
它使一个类可以使用另一个基类中定义的方法和属性,在基类中已经定义了一些功能,子
类可以对基类功能进行拓展与定制。
《Java技术手册》得出结论,继承可以有效提高软件的复用性、可维护性和可重用性,使大型的、复杂的程序有条理层次。
多态是Java中一种特殊的程序结构,允许不同类的对象对相同的消息作出不同的响应,由程序的消息而不是对象的类型来决定对象的行为。
它是Java多态性的基础,使程
序能够在不同对象上进行操作,统一实现。
从实验中,可以明显看出Java继承与多态之间的联系:多态必须依赖于继承,当子
类被创建时,它继承了母类的方法以及特性,这样,它才能以逐渐上升的方式处理所有消息,而多态给了子类独特-->性的功能。
同时,多态也方便了代码重用,因为子类会继承
母类的方法和属性。
此外,结果表明,多态的优点使程序可以提高可重用性,它也减少了代码的重复编写,同时允许特定类之外的类可以得到适用。
它促进了软件不断更新,因为多态给开发人员提
供了以对象层次组织代码的方法。
本练习涉及到Java继承与多态概念的整体概述和实现细节,为完全理解多态的概念
打下了坚实的基础。
它提供了一个理解和使用这些概念的有用方式和指导。
实验报告课程名称 Java技术专业班级 13-计算机科学与技术-1班学生姓名及学号 98 潘汀指导教师钟华刚实验地点计算中心2015 ~ 2016 学年第一学期实验一类的封装、继承、多态一、实验目的1.复习、理解OOP的特征——封装、继承和多态。
2.学会使用Java编写简单的类。
理解类的属性和方法。
3.掌握关键字private, protected, public的作用。
4.掌握多态的概念。
二、实验内容1.分别编写两个类Point2D,Point3D来表示二维空间和三维空间的点,使之满足下列要求:(1) Point2D有两个整型成员变量x, y (分别为二维空间的X,Y方向坐标),Point2D的构造方法要实现对其成员变量x, y的初始化。
(2) Point2D有一个void型成员方法offset(int a, int b),它可以实现Point2D的平移。
(3) Point3D是Point2D的直接子类,它有有三个整型成员变量x,y,z (分别为三维空间的X,Y,Z方向坐标),Point3D有两个构造方法:Point3D(int x,int y,int z)和Point3D(Point2D p,int z),两者均可实现对Point3D的成员变量x, y,z的初始化。
(4) Point3D有一个void型成员方法offset(int a, int b,int c),该方法可以实现Point3D的平移。
(5)在Point3D中的主函数main()中实例化两个Point2D的对象p2d1,p2d2,打印出它们之间的距离,再实例化两个Point3D的对象p3d1,p3d2,打印出他们之间的距离。
提示:方法2.创建一个数组,随机生成Point2D或者Point3D的对象放于其中。
最后依次调用数组中每个对象的“打印方法”,显示数组中存储的对象是什么。
提示:方法或者类三、实验代码四、思考题1.你对面向对象的理解。
java实验报告类的继承Java实验类与继承实验报告实验课程:Java面向程序设计实验实验内容:类与对象院(系):计算机学院专业:计算机科学与技术(软件工程方向)班级:学生姓名:学号:指导教师:2014年 3 月26 日一、实验目的:1、掌握用类来封装对象的属性和行为的方法;2、掌握对象的组合和参数传递;3、掌握类变量与实例变量、类方法与实例方法的区别。
二、实验内容(-)实验题目一:编写一个java应用程序,该程序中有两个类:Tank和Fight具体要求如下:1、Tank类有一个double类型变量speed,用于刻画坦克的速度;一个int型变量bulletAmount,用于刻画坦克的炮弹数量。
定义了speedUp()和speedDown()方法,体现坦克有加速、减速行为;定义了setBulletAmount(int p)方法,用于设置坦克炮弹的数量;定义了fire()方法,体现坦克有开炮行为。
1.程序源代码:package p1;public class Tank {}double getSpeed(){}void fire(){}}package p1;public class Fight {public static void main(String args[]){Tank tank1,tank2; tank1=new Tank(); if(bulletAmount=1){ bulletAmount=bulletAmount-1; System.out.println(打出一发炮弹); } else{ System.out.println(没有炮弹了,无法开火); } return speed; double speed; int bulletAmount; void speedUp(int s){ speed=s+speed; } void speedDown(int d){ } void setBulletAmount(int m){ } return bulletAmount; bulletAmount=m; if(speed-d=0)speed=speed-d; speed=0; else int getBulletAmount(){} tank2=new Tank(); tank1.setBulletAmount(10); tank2.setBulletAmount(10); System.out.println(tank1的炮弹数量:+tank1.getBulletAmount()); System.out.println(tank2的炮弹数量:+tank2.getBulletAmount()); tank1.speedUp(80); tank2.speedUp(90);System.out.println(tank1目前的速度:+tank1.getSpeed()); System.out.println(tank2目前的速度:+tank2.getSpeed()); tank1.speedDown(15); tank2.speedDown(30); System.out.println(tank1目前的速度:+tank1.getSpeed()); System.out.println(tank2目前的速度:+tank2.getSpeed()); System.out.println(tank1开火:); tank1.fire(); System.out.println(tank2开火:); tank2.fire(); tank2.fire(); System.out.println(tank1的炮弹数量:+tank1.getBulletAmount()); System.out.println(tank2的炮弹数量:+tank2.getBulletAmount()); } 2.实验结果:图13、实验课后练习:(1)改进speedUp方法,使得Tank类的对象调用它能将Speed值超过220;答:只需加入如下代码,其实验结果如图2:void speedUp(int s){if(s+speed=200)//加入判断语句即可speed=s+speed;}图2:tank2加速200,超过220,所以tank2数值保持不变(2)增加一个刹车方法:void brake(),Tank类的对象调用它将speed的值变为0.答:只需增加如下代码:其结果如图3所示:void brake(){} speed=0;System.out.println(tank2加速200:);tank2.speedUp(200);System.out.println(tank2调用brake后:); tank2.brake();篇二:JAVA继承实验报告JAVA语言程序设计实验报告实验一实验题目:面向对象编程指导老师:卢照专业班级:计算机科学与技术系1106班姓名:****(20111006**)2014年3月20日一、实验名称:面向对象编程二、实验目的:1.熟悉Java开发运行环境。
实验报告学生姓名:学号:专业班级:实验类型:□验证□综合□设计□创新实验日期:实验成绩:一、实验项目名称抽象、封装与类(一)二、实验目的1.掌握抽象、封装、继承和多态2.熟练掌握如何自定义一个类。
3.掌握类的访问权限4.掌握类成员的访问控制1三、实验基本原理四、主要仪器设备及耗材Myclipse五、实验步骤1、调试程序例3-42、编写如下程序。
(1)定义一个表示学生的类Student,包括属性“学号”、“班号”、“姓名”、“性别”、“年龄”;方法“获得学号”、“获得班号”、“获得姓名”、“获得性别”、“获得年龄”、“修改年龄”。
(2)为Student类定义构造函数初始化所有属性,增加一个方法public String toString(),把Student类对象的所有属性信息组合成一个字符串输出。
(3)在main()中创建Student类对象,测试自定义类。
六、实验数据及处理结果1、package ncu;2public class Exam3_4 {s tatic double d;p ublic static void main(String args[]){int i;Exam3_4 pt=new Exam3_4();i=5;(i);"int type value is:"+i);=;(pt);"double type value is"+d);}public void changeInt(int v){v=10;}p ublic void changeDouble(Exam3_4 ref){=;}}32、package ncu;public class student {p rivate int id;p rivate String name;p rivate String tel;p rivate String addr;p rivate static int total;p ublic int getid(){return ;}p ublic void setid(int id){4=id;}p ublic String getname(){return name;}public void setname(String name){=name;}public String gettel(){return tel;}public void settel(String tel){=tel;}public String getaddr(){return addr;}public void setaddr(String addr){=addr;}public student(){total++;id=total;}public student(String name){total++;id=total;=name;5}public String toString(){S tring s="id:"+id+" name:"+name+" tel:"+tel+" addr:"+addr;r eturn s;}public static void main(String[]args){s tudent stu1=new student ("zhangsan");("123456");("nanchang");七、思考讨论题或体会或对改进实验的建议八、参考资料6。
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. 实验经验和问题在实验中,通过继承,我们成功地将动物的共同属性和行为提取到父类中,实现了代码的重用。
Java实验报告范文(四)继承和多态福建农林大学计算机与信息学院实验报告一、实验目的和要求1.2.3.4.掌握面向对象的继承关系理解面向对象的多态掌握方法的重写掌握接口的实现二、实验内容和原理三、实验环境1.硬件环境:2.软件环境:JDK1.5四、算法描述及实验步骤1.算法描述(可以用类图、流程图、伪代码或源程序描述)…2.实验步骤创建一个UML项目,并设计类Shape、Rectangle和Circle,并建立把UML项目中的类自动生成代码到Java应用项目中实现类中的方法及通用的排序和检索程序进行编译进行测试,使用的测试用例:输入:预期输出:…五、调试过程1.编译过程改为:2.调试过程记录算法实现中发现的逻辑错误及改正,对每个测试用例,记录实际输出,并与预期输出进行比较,如果不同,分析产生错误的原因并改正。
输入:预期输出:【排序面积从小到大】:【圆形数组】【长度】5【位置】0【圆形】【半径】:2.0【面积】12.57【周长】:12.57【位置】1【圆形】【半径】:3.0【面积】28.27【周长】:18.85【位置】2【圆形】【半径】:4.0【面积】50.27【周长】:25.13【位置】3【圆形】【半径】:5.0【面积】78.54【周长】:31.42【位置】4【圆形】【半径】:6.0【面积】113.10【周长】:37.70【矩形数组】【长度】5【位置】0【矩形】【长】:1.0【宽】:2.0【面积】:2.00【周长】:4.00【位置】1【矩形】【长】:2.0【宽】:3.0【面积】:6.00【周长】:12.00【位置】2【矩形】【长】:3.0【宽】:4.0【面积】:12.00【周长】:24.00【位置】3【矩形】【长】:4.0【宽】:5.0【面积】:20.00【周长】:40.00【位置】4【矩形】【长】:5.0【宽】:6.0【面积】:30.00【周长】:60.00【二分法查找】:【对象】【圆形】【半径】:6.0【面积】113.10【周长】:37.70位于【圆形】数组的第【4】位。