实验名称 java类的继承和多态
类的继承与多态java
实验四类的继承与多态谢先斌一、实验目的1.掌握构造方法和成员方法重载的应用。
2.理解类的继承性的作用3.领会面向对象编程的多态性。
二、实验内容与要求1、定义一个圆类Circle,成员变量:半径radius;成员方法:构造方法、get和set半径的方法、计算面积和周长的方法。
定义圆柱和圆锥类,定义相应的变量成员和成员方法。
使用以上类编程,输出圆柱和圆锥面积和体积。
import java.util.Scanner;public class TheCircles {public static void main(String[] args){Scanner input=new Scanner(System.in);int h,r;System.out.print("请输入圆的半径:");r=input.nextInt();Circle c=new Circle();c.set(r);System.out.println("圆的半径为:"+c.get()+"\n圆的面积为:"+c.area()+"\n圆的周长为:"+c.circum()+"\n");System.out.print("请输入圆柱的低面半径h=");h=input.nextInt();System.out.print("请输入圆柱的高r=");r=input.nextInt();Cylin cy=new Cylin(r,h);System.out.println("圆柱的表面积为:"+cy.area()+"\n体积为:"+cy.V olume()+"\n");System.out.print("请输入圆锥的低面半径h=");h=input.nextInt();System.out.print("请输入圆锥的高r=");r=input.nextInt();Cone co=new Cone(r,h);System.out.println("圆柱的表面积为:"+co.area()+"\n体积为:"+co.V olume()+"\n");}}{int radius;public Circle(){}public Circle(int radius){this.radius=radius;}public void set(int radius){this.radius=radius;}public int get(){return radius;}//求面积public double area(){return Math.PI*radius*radius;}//求周长public double circum(){return Math.PI*radius*2;}}//定义圆柱类class Cylin extends Circle{int height;//构造函数public Cylin(int radius, int height){super(radius);this.height=height;}//求表面积public double area(){return Math.PI*radius*radius+2*Math.PI*radius*height;}//求体积public double V olume(){return Math.PI*radius*radius*height;}//定义圆锥类class Cone extends Circle{int height;//构造器public Cone(int radius, int height){super(radius);this.height=height;}//求表面积public double area(){double length;length=Math.sqrt(height*height+radius*radius);return Math.PI*radius*radius+Math.PI*(2*Math.PI*radius)*length;}//求体积public double V olume(){return Math.PI*radius*radius*height/3;}}2、声明一个类MyClass,包含一个整型变量data和封装这个变量的两个方法getData()和setData()。
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类的继承实验报告引言:在面向对象的编程语言中,继承是一种重要的概念。
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中覆盖不仅仅发生在类的继承/扩展上,还可能发生在接口的实现上。
继承与多态java
super(newsurname,newname,newssn);
hourly=newhourly;
hours=newhours;
}
public void weeksalary()
{ week=hourly*hours;
}
public String toString()
{ return surname+name+"\t"+ssn+"\t"+week;
专业班级
通信1102(移动方向)
姓名
学号
时间:2013.11.11
地点:计通学院106机房
实验名称:继承与多态
实验前任务
实验目的:
1.理解继承是如何促进软件重用的
2.理解父类和子类的概念
3.能够通过继承已有的类来创建新类,并能吸收其属性和行为
4.理解访问修饰符protected
5.更够用关键字super访问父类成员
AmericanPeople americanPeople=new AmericanPeople();
BeijingPeople beijingPeople=new BeijingPeople();
chinaPeople.speakHello();
americanPeople.speakHello();
注:用相应的输出语句表示出语义即可。
3.抽象类和抽象方法。定义一个抽象类Shape,类里有一个抽象方法display();定义一个Cricle类,继承了Shape类,并实现抽象方法display();定义一个Rectangle类,继承了Shape类,并实现抽象方法display();定义一个Triangle类,继承了Shape类,并实现抽象方法display();定义一个类,实例化上述几个类的对角,并使用上述几个类的display方法。注:用相应的输出语句表示出语义即可
java类的继承实验报告
java类的继承实验报告Java类的继承实验报告引言:在面向对象的编程语言中,继承是一种重要的概念。
Java作为一种面向对象的编程语言,也提供了类的继承机制。
本实验旨在通过编写Java程序,深入理解和掌握Java类的继承。
实验目的:1. 理解继承的概念和原理;2. 掌握Java中类的继承的语法和用法;3. 实践继承的实际应用。
实验过程:1. 创建父类和子类在实验中,我们首先创建一个父类和一个子类。
父类可以是一个基本的类,子类则继承了父类的属性和方法。
这样,子类就可以在不改变父类的基础上,扩展自己的功能。
2. 继承的语法和用法Java中,使用关键字"extends"来实现类的继承。
子类通过继承父类,可以获得父类的属性和方法,并且可以在子类中添加新的属性和方法。
在实验中,我们可以通过创建子类对象,并调用继承自父类的方法来验证继承的正确性。
3. 方法的重写在继承中,子类可以重写父类的方法。
这样,当子类调用该方法时,实际上执行的是子类重写后的方法。
通过方法的重写,我们可以实现多态性的效果。
4. 实际应用在实验中,我们可以选择一个具体的应用场景,例如动物类的继承。
我们可以创建一个父类Animal,包含基本的属性和方法,然后创建子类Dog和Cat,分别继承Animal类,并添加自己的特有属性和方法。
通过这个实例,我们可以更好地理解继承的实际应用。
实验结果:通过实验,我们成功地创建了父类和子类,并验证了继承的正确性。
我们还成功地重写了父类的方法,实现了多态性的效果。
最后,我们还通过实际应用的例子,更好地理解了继承的实际应用。
实验总结:通过本次实验,我们深入理解和掌握了Java类的继承。
继承是面向对象编程中的重要概念,通过继承,我们可以实现代码的重用和扩展。
在实际应用中,继承也可以帮助我们更好地组织代码,提高代码的可读性和可维护性。
然而,继承也有一些限制和注意事项。
首先,Java中只支持单继承,即一个子类只能继承一个父类。
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】//定义成员变量departmentpublic static void main(String args[]){【代码3】//创建一个学生对象s【代码4】//用父类的setData方法初始化对象s【代码5】//对象s调用print方法【代码6】//创建一个大学生对象u【代码7】//调用父类的成员方法setData初始化对象u【代码8】//设置对象u的成员变量academy【代码9】//设置对象u的成员变量departmentSystem.out.print(+", "+u.number+", "+u.academy+", "+u.department);}}(3)编译并运行程序注意:公共类Student 与undergraduate 类要在同一文件夹(路径)内。
实验4 继承性和多态
实验四继承性和多态一、实验目的:熟悉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.掌握抽象类的声明;2.掌握多态的执行机理;3.掌握上转型的使用;4.掌握构造方法的执行机理;5.面向抽象的编程;二、实验内容1.假定根据学生的3门学位课程的分数决定其是否可以拿到学位,对于本科生,如果3门课程的平均分数超过60分即表示通过,而对于研究生,则需要平均超过80分才能够通过。
根据上述要求,请完成以下Java 类的设计:(1)设计一个基类Student描述学生的共同特征。
(2)设计一个描述本科生的类Undergraduate,该类继承并扩展Student类。
(3)设计一个描述研究生的类Graduate,该类继承并扩展Student类。
(4)设计一个测试类StudentDemo,分别创建本科生和研究生这两个类的对象,并输出相关信息。
2.假定要为某个公司编写雇员(40个雇员)工资支付程序,这个公司有各种类型的雇员(Employee),不同类型的雇员按不同的方式支付工资:(1)经理(Manager)——每月获得一份固定的工资(2)销售人员(Salesman)——在基本工资的基础上每月还有销售提成。
(3)一般工人(Worker)——则按他每月工作的天数计算工资。
根据上述要求试用类的继承和相关机制描述这些功能,并编写一个Java Application程序,演示这些类的用法。
(提示:应设计一个雇员类(Employee)描述所有雇员的共图特性,这个类应该提供一个计算工资的抽象方法ComputeSalary( ),使得可以通过这个类计算所有雇员的工资。
经理、销售人员和一般工人对应的类都应该继承这个类,并重新定义计算工资的方法,进而给出它的具体实现。
(用对象数组)三、实验报告涉及以下内容1.继承中父子构造方法的执行关系2.重写3.super的应用4.上转型5.多态。
实验名称 java类的继承和多态
实验名称 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实验指导4继承与多态
-------------精选文档 -----------------《Java 程序设计》实验指导实验四继承与多态一、实验目的:1.掌握类的继承方法。
2.掌握变量的继承和覆盖。
3.掌握方法的继承、重载和覆盖。
4.了解接口的实现方法。
二、实验原理新类可从现有的类中产生,并保留现有类的成员变量和方法,并可根据需要对它们加以修改。
新类还可添加新的变量和方法。
这种现象就称为类的继承。
当建立一个新类时,不必写出全部成员变量和成员方法。
只要简单地声明这个类是从一个已定义的类继承下来的,就可以引用被继承类的全部成员。
被继承的类称为父类或超类(superclass),这个新类称为子类。
Java 提供了一个庞大的类库让开发人员继承和使用。
设计这些类是出于公用的目的,因此,很少有某个类恰恰满足你的需要。
你必须设计自己的能处理实际问题的类,如果你设计的这个类仅仅实现了继承,则和父类毫无两样。
所以,通常要对子类进行扩展,即添加新的属性和方法。
这使得子类要比父类大,但更具特殊性,代表着一组更具体的对象。
继承的意义就在于此。
语法格式:类访问限定符子类名extends父类名{⋯⋯}三、实验内容及要求:1.定义一个接口( ShapeArea ),其中包含返回面积的方法(getArea )。
定义一个矩形类( Rectangle),派生出一个正方形类(Square ),再定义一个圆类(Circle ),三者都要求实现接口ShapeArea,自行扩充成员变量和方法。
在主方法中建一数组,数组中放入一些上述类型的对象,并计算它们的面积之和。
2.运行下面的程序,理解成员变量的继承与隐藏,方法的覆盖与重载。
class A{int sum,num1,num2;public A(){num1=10;num2=20;sum=0;}void sum1(){sum=num1+num2;System.out.println("sum="+num1+"+"+num2+"="+sum);}void sum2(int n){num1=n;sum=num1+num2;System.out.println("sum="+num1+"+"+num2+"="+sum);}}class B extends A{int num2;public B(){num2=200;}void sum2(){sum=num1+num2;System.out.println("sum="+num1+"+"+num2+"="+sum);}void sum2(int n){num1=n;sum=num1+num2;System.out.println("sum="+num1+"+"+num2+"="+sum);}void sum3(int n){super.sum2(n);System.out.println("sum="+num1+"+"+num2+"="+sum);}}public class test{public static void main (String arg[]){B m=new B();m.sum1();m.sum2();m.sum2(50);m.sum3(50);}}。
《Java程序设计》上机实验报告 实验三 面向对象程序设计的继承、多态等特性的练习
信息科学与工程学院《Java程序设计》上机实验报告专业班级姓名学号实验时间指导教师成绩主要实验记录及个人小结(包括部分实验源程序、调试结果及实验结果分析等)Student(String name,String sex,int age,String sno,String classno) {super(name,sex,age);this.sno=sno;this.classno=classno;}public String toString(){ return("姓名:"+name+" 性别:"+sex +" 年龄:"+age+ " 学号:"+sno+" 班号:"+classno+" ");}}public class TestStudentPerson {public static void main(String[] args){int i;Student stu[]=new Student[3];stu[1]=new Student("小明","男",20,"200912135138","2班");stu[2]=new Student("小木","女",23,"200912135136","5班");stu [1].updateAge(25);stu [2].updateAge(26);for(i=1;i<3;i++){System.out.println(stu[i]);}}}2)调试结果:主要实验记录及个人小结(包括部分实验源程序、调试结果及实验结果分析等)调试结果:2)将Shape类定义为abstact class Shape{……}public class TestVirtualInvoke {static void doStuff(Shape s){s.draw();}public static void main(String[] args) {Circle c=new Circle();Triangle t=new Triangle();Line l=new Line();doStuff(c); //作为实参,调用对象是3个类对象,上溯造型使其隐藏.doStuff(t);doStuff(l);}}abstract class Shape{abstract void draw();}class Circle extends Shape{void draw(){System.out.println("Draw Circle");}} //定义Shape抽象类的派生类Circleclass Triangle extends Shape{void draw(){System.out.println("Draw Three Triangle");}}//定义Shape抽象类的派生类Triangleclass Line extends Shape{void draw(){System.out.println("Draw Line");}}//定义Shape抽象类的派生类Line主要实验记录及个人小结(包括部分实验源程序、调试结果及实验结果分析等)调试结果:3)将Shape定义为interface Shape{……}public class TestVirtualInvoke {static void doStuff(Shape s){s.draw();}public static void main(String[] args) {Circle c=new Circle();Triangle t=new Triangle();Line l=new Line();doStuff(c); //作为实参,调用对象是3个类对象,上溯造型使其隐藏.doStuff(t);doStuff(l);}}interface Shape{public void draw();} //定义一个Shape接口class Circle implements Shape{public void draw(){System.out.println("Draw Circle");}} //基于Shape接口利用implements实现类Circleclass Triangle implements Shape{public void draw(){System.out.println("Draw Three Triangle");}}class Line implements Shape{public void draw(){System.out.println("Draw Line");}}调试结果:3.思考题:某小型公司,主要有三类人员:经理、兼职技术人员和兼职推销员。
Java继承与多态实验报告.doc
Java继承与多态实验报告.doc
Java的继承与多态实验报告
本报告致力于分析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语言程序设计)院系:专业班级:姓名:学号:实验地点:指导老师:本实验项目成绩:教师签字:日期:1.实验目的(1)掌握类的继承机制。
(2)熟悉类中成员变量和方法的访问控制。
(3)熟悉方法或构造方法多态性。
2.实验内容(1)模拟编写程序,理解类的继承、多态、继承和多态规则。
(2)独立编程,实现类的继承和多态。
3.实验作业设计一个类Shape(图形)包含求面积和周长的area()方法和perimeter()方法以及设置颜色的方法SetColor(),并利用Java多态技术设计其子类Circle(圆形)类、Rectangle (矩形)类和Triangle(三角形)类,并分别实现相应的求面积和求周长的方法。
每个类都要覆盖toString方法。
海伦公式:三角形的面积等于s(s-a)(s-b)(s-c)的开方,其中s=(a+b+c)/2程序代码为:Class包package Class;public class Shape {private String color = "while";public Shape(String color){this.color = color;}public void setColor(String color){this.color = color;}public String getColor(){return color;精选文库}public double getArea(){return 0;}public double getPerimeter(){return 0;}public String toString(){return"color:" + color;}}package Class;public class Circle extends Shape {private double radius;public Circle(String color,double radius) {super(color);this.radius = radius;}public void setRadius(double radius){this.radius = radius;}public double getRadius(){return radius;}public double getCircleArea(){return 3.14*radius*radius;}public double getCirclePerimeter(){return 3.14*2*radius;}public String toString(){return"The Area is:" + getCircleArea()+ "\nThe Perimeter is:" + getCirclePerimeter();}}package Class;public class Rectangle extends Shape{private double width;private double height;public Rectangle(String color,double width,double height) { super(color);this.width = width;this.height = height;}public void setWidth(double width){this.width = width;}public double getWidth(){return width;}public void setHeight(double height){this.height = height;}public double getHeight(){return height;}public double getRectangleArea(){return width*height;}public double getRectanglePerimeter(){return 2*(width + height);}public String toString(){return"The Area is:" + getRectangleArea()+ "\nThe Perimeter is:" + getRectanglePerimeter();}}package Class;public class Triangle extends Shape{private double a;private double b;private double c;private double s;public Triangle(String color,double a,double b,double c, double s){ super(color);this.a = a;this.b = b;this.c = c;this.s = s;}public void setA(double a){this.a = a;}public double getA(){return a;}public void setB(double b){this.b = b;}public double getB(){return b;}public void setC(double c){this.c = c;}public double getC(){return c;}public double getTriangleArea(){return Math.sqrt(s*(s-a)*(s-b)*(s-c));}public double getTrianglePerimeter(){return a + b + c;}public String toString(){return"The Area is:" + getTriangleArea()+ "\nThe Perimeter is:" + getTrianglePerimeter();}}Main包package Main;import Class.Shape;import Class.Circle;import Class.Rectangle;import Class.Triangle;import java.util.Scanner;public class test {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.print("请输入圆的半径: ");double radius = input.nextDouble();Circle circle = new Circle(null, radius);System.out.println(circle.toString());System.out.print("\n请输入矩形的宽: ");double width = input.nextDouble();System.out.print("请输入矩形的高: ");double height = input.nextDouble();Rectangle rectangle = new Rectangle(null, width, height);System.out.println(rectangle.toString());System.out.print("\n请输入三角形的第一条边 a: ");精选文库double a = input.nextDouble();System.out.print("请输入三角形的第二条边 b: ");double b = input.nextDouble();System.out.print("请输入三角形的第三条边 c: ");double c = input.nextDouble();double s = (a + b + c)/2;Triangle triangle = new Triangle(null, a, b, c, s);System.out.println(triangle.toString());}}运行结果为:4.实验总结(1)通过实验掌握了类的继承机制。
Java实验报告(四)继承和多态
int index=BinarySearch(shape1,shape3);
System.out.println("\n【二分法查找】:");
if(index==0){
System.out.println("【对象】"+shape3.toString()+"不存在【圆形】数组中。");
}
else{
Shape[] shape2={new Rectangle(1.0,4.0),new Rectangle(7.0,3.0),new Rectangle(3.0,5.0),
new Rectangle(9.0,5.0),new Rectangle(5.0,4.0)};
Shape shape3=new Circle(2.0);
}
public double getRadius(){
return radius;
}
public void setRadius(double val){
this.radius=val;
}
public double getArea(){
return Math.PI*radius*radius;
}
public double getPerimeter(){
}
else{
return -1;
}
}
public int compareTo(Object o) {
if(this.getArea()>((Circle)o).getArea())
return 1;
else if(this.getArea()==((Circle)o).getArea())
(4) 实验四 继承与多态
Java语言使用extends关键字在两个类之间建立这种类似与父子血缘关系的“继承”关系:在定义类时,使用extends来指明它的父类。
值得注意的是,Java中的继承只能是单继承即单根继承。
语法格式:
class SubClass extens SuperClass{//只能有一个父类
……
System.out.pri!~”);
}
public void fB(){
System.out.println(“method fB() from class B!”);
fA();
System.out.println(“x is”+ x);
}
}
public class Test{
2)什么时候需要使用super语句来显式调用父类构造?
(二)多态
多态是面向对象编程的重要技巧,它也是面向对象的重要特征之一。多态的本意是“同一个操作,不同的行为”,也就是使用同一个方法名,运行的实际是不同的方法。在Java语言中,多态主要通过方法的重载(Overloading)和重写(Overriding)实现。
public static void main(String[] args){
B b;
System.out.println(“====类已加载完毕=====”);
b = new B(10);
b.fB();
}
}
问题:
1)请结合运行结果分析Java中创建对象过程。(分析类的不同区域的运行前后次序,提示:类加载时或创建对象时,父类静态成员、实例成员、构造方法和子类静态成员、实例成员、构造方法的执行先后次序)
当程序运行并通过向上转型后的对象来调用方法时,Java会根据实际的对象类型来调用实际类型所对应的方法。这种运行时的多态,我们也成为动态绑定。
java 实验3 继承与多态
Java程序设计实验报告题目:继承与多态学院:计算机科学学院专业:08教育技术学01班姓名:赵小龙学号:40809020105继承与多态一、实验目的1.掌握类的继承方法。
2.掌握变量的继承和覆盖。
3.掌握方法的继承、重载和覆盖。
4.了解接口的实现方法。
二、实验内容1.运行下面的程序,理解成员变量的继承与隐藏。
2.运行下面的程序,理解方法的继承。
3.运行下面的程序,理解方法的重载。
4.运行下面的程序,理解方法的覆盖。
5.定义两个接口,其方法协议分别完成两个数的加法和减法操作,然后创建一个类实现这两个接口的方法。
三、思考题1.子类重新定义与父类方法的方法头完全相同的方法,这种情况称为什么?答:这种情况称为重写。
2.同名的不同方法共存的情况称为什么?如何区分这些同名方法?答:一般来说,分为两种情况。
一是在同一个类里面有两个或两个以上的同名的方法,这些方法的名字相同,但参数不同,这种情况中叫重载。
当你调用方法时,会根据你传进去的参数的类型来决定调用哪个方法。
二是一个类继承了另外一个类,子类中有和父类中一样的方法,这两个方法不仅名字相同,参数也相同,这种情况叫方法覆盖。
也就是在子类中重新定义父类中已有的方法。
当你创建一个子类的实例后调用这个方法,就会按照你在子类中新定义的方法来实现。
3.创建一个类,声明一个无参数的构造函数,打印类已创建的信息;再重载一个具有String参数的构造函数,打印参数信息;并创建主类验证之。
四、实验心得通过这次实验,我了解到了类的继承方法、掌握变量的继承和覆盖、掌握方法的继承、重载和覆盖、了解接口的实现方法,这方面的知识有很大的提高,并且自己有一定的见解。
这些在我以后学习java编程上面有很大的帮助,我想对我以后java的编程一定会打好坚实的基础。
java类的继承与多态实验报告
this.c=c;
}
doublearea() {
doubleL=(a+b+c)/2;
//TODOAuto-generated method stub
returnMath.sqrt(L*(L-a)*(L-b)*(L-c));
}
doublelength() {
//TODOAuto-generated method stub
return4*a;
}
}
packageruanjian.zhaihaiyang.shiyan3;
publicclassCircleextendsShape {
privatedoubler;
publicCircle(doubler,Stringname){
super(name);
this.r=r;
}
doublearea() {
doubleL=(a+b+c)/2;
return2*L;
}
packageruanjian.zhaihaiyang.shiyan3;
publicclassShapeDemo {
publicstaticvoidmain(String[]args) {
Shapes1=null;
s1=newCircle(5,"圆形");
源代码:
packageruanjian.zhaihaiyang.shiyan3;
publicabstractclassShape {
protectedStringname;
publicShape(){
name="图形类";
}
publicShape(Stringname){
java类的继承和多态
第八章类的继承和多态教学目的:深刻理解类的继承教学内容:1、类的继承和实现2、构造器的调用3、防止类的继承一、类的继承和实现所谓继承就是在已经存在类的基础上再扩展新的类。
已经存在的类我们称父类、超类、基类。
新产生的类,我们称子类、派生类。
子类拥有父类的所有特性。
当然我们也可以在子类中添加新的方法和成员变量,这些新添加的方法和成员变量仅仅属于子类。
在Java中通过关键字“extends”来实现。
比如在学生类中,有一种特殊的学生就是学生干部,他们出来拥有和普通学生一样的方法和属性之外,有的有一个职务描述(Duty)。
我们定义学生管理类ClassManger,它拥有父类的所有的方法和属性。
一般来讲,应该把相对通用的方法都放在父类中,只有更具体和专门的方法放在子类中。
1、对于学生干部而言,我们要添加一个属性就可以了private String duty=””;2、但是student里的print()就不能满足我们的ClassMange的要求了。
而且student的构造方法也不能直接用来ClassMange上。
那么我们怎么定义ClassMange()和print()呢?如果重新写很麻烦,可不可以在父类方法的基础上修改呢?只要使用关键字super就可以了。
this:一个对象的引用。
super:是用来告诉编译器调用父类的方法的关键字。
代码如下:class school{public static void main(String[] args){student[] stu=new student[3];stu[0]=new ClassMange("章三","2009001","班长");stu[1]=new student("李四","2009002");stu[2]=new student("王五","2009003");/* for (int i=0;i<stu.length ;i++ ){ stu[i].print();} */stu[0].setSex("男");stu[0].setSpeci("软件技术");stu[0].print();}}class student{ private String name; //定义学生姓名private String ID; //定义学生学号private String sex=""; //定义学生性别private String speci=""; //定义学生专业//构造方法public student(String name,String ID){ =name;this.ID=ID;}public student(String name,String ID,String sex,String speic){ =name;this.ID=ID;this.sex=sex;this.speci=speic;}//访问器public String getName(){ return name;}public String getID(){ return ID;}public String getSex(){ return sex;}public String getSpeci(){ return speci;}//设置器public void setSex(String sex){ this.sex=sex;}public void setSpeci(String speci){ this.speci=speci;}//打印方法public void print(){ System.out.println("学生学号:"+ID+"\n学生姓名:"+name);if(!sex.equals(""))System.out.println("性别="+sex);if(!speci.equals(""))System.out.println("专业="+speci);}}class ClassMange extends student{ private String duty="";public ClassMange(String name,String ID,String duty){ super(name,ID); //调用父类的构造方法,初始化相关字段this.duty=duty;}public String getDuty(){ return duty;}public void print(){ super.print();if(!duty.equals(""))System.out.println("职务:"+duty);}}总结子类和父类的关系:1、子类完全继承父类的所有的属性和方法,子类的对象只可以调用父类里公共的属性和方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验名称 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、上面的程序有一处错误,请改正使其能正确运行。
2、什么是对象的上转型对象,
3、在Java中能不能防止一个类被继承,若能,如何实现,
4、子类People具不具有父类Monkey中属性age,若没有继承属性age,请修改程
序使子类具有父类中的所有属性。
3、阅读下面的程序,回答程序。
class Computer{
void compute(int a,int b){
int c=a+b;
System.out.println(a+"+"+b+"="+c);
}
void compute(double a,double b){
double c=a+b;
System.out.println(a+"+"+b+"="+c);
}
}
public class Excise7_3{
public static void main(String arg[]){
Computer c=new Computer();
pute(10,20);
pute(10.5,20.5);
}
}
问题:
(1) 请解释“重载”的概念。
(2) 假设在main方法中增加一条语句pute(“java”,”program”);后仍能正确
执行,请完善上面的程序。
4、运行下面的程序,回答问题。
public class Excise7_4{
Person y=new Person();
Person x=new Tang();
Person z=new Tang("sun");
Person t=new Tang("zhu",200);
public static void main(String args[]){ System.out.println("y="+y.getName()); System.out.println("x="+x.getName()); System.out.println("z="+z.getName()); System.out.println("t="+t.getName());
}
}
class Person{
String name=new String("person");
float height=1.75f;
public String getName(){
return("name:"+name+"\n"+"height:"+height); }
}
class Tang extends Person{
String name;
int weight;
public Tang(){
name="tang";
weight=75;
}
public Tang(String name){
=name;
weight=75;
}
public Tang(String name,int weight){
=name;
this.weight=weight;
}
public String getName(){
return("name:"+name+"\n"+"weight:"+weight);
}
}
问题:
(1) 上面程序定义对象的语句不正确,请指出,并给出原因。
(2) 请用两种方法改正上面的程序,使其能正确执行。
(3) 什么是多态,
四、实验小结
1、理解实验结果,回答实验内容中的问题;
2、通过完成上述实验内容,你理解类的继承机制吗,理解了覆盖、重载与多态吗?
3、对上述实验内容进行小结,完成实验报告。
五、思考与练习
1. 父类Box,子类BoxWeight,计算输出子类对象的体积和重量。
具体要求及
步骤:
i. 定义类Box,具有如下属性字段:宽度(width)、高度(height)、深度(depth);
定义构造函数初始化这三个字段;定义一个成员函数volume,计算Box的体积(, width*height*depth)。
ii. 定义Box的子类BoxWeight,使其比Box多一个属性字段重量(weight);定
义构
造函数初始化这四个字段。
iii. 定义主类,在主类中声明两个子类对象,分别计算输出两个对象的体积
和重量。