实验五 继承与多态
c#第6章 继承与多态性

例如: 例如: class Humen { public string name; name; public string sex; sex; public string work ; } class Teacher:Humen Teacher: { public string speciality ; public string department; department; } Human是基类 Teacher是派生类 Human是基类,Teacher是派生类,它拥有基类 是基类, 是派生类, 的全部成员。 的全部成员。
派生类隐藏基类成员 :用new关键字。 new关键字 关键字。 隐藏基类的字段成员: 隐藏基类的字段成员: 派生类可以声明与基类有相同的名称和类型的字 派生类可以声明与基类有相同的名称和类型的字 段成员来隐藏基类的字段。 来隐藏基类的字段 段成员来隐藏基类的字段。这时通过派生类引用 或对象访问的是派生类的字段, 或对象访问的是派生类的字段,基类的相应成员 被屏蔽了。但是通过指向派生类对象的基类引用 被屏蔽了。但是通过指向派生类对象的基类引用 访问的则是基类的字段。 访问的则是基类的字段。 隐藏基类的方法成员: 隐藏基类的方法成员: 派生类可以声明与基类有相同的方法名称和形参 表的方法成员来隐藏基类的方法 基类的方法, 表的方法成员来隐藏基类的方法,与返回类型无 这时通过派生类引用或对象访问的是派生类 关。这时通过派生类引用或对象访问的是派生类 的方法成员,基类的相应方法成员被屏蔽了。 的方法成员,基类的相应方法成员被屏蔽了。但 是通过指向派生类对象的基类引用访问的则是基 指向派生类对象的基类引用访问的则是 是通过指向派生类对象的基类引用访问的则是基 类的成员。 类的成员。 派生类中可以通过 可以通过base关键字访问被隐藏的基 在派生类中可以通过base关键字访问被隐藏的基 类成员。 类成员。 详见例MaskBase。 详见例MaskBase。
软件实验心得体会

软件实验心得体会在软件实验课程的学习过程中,我收获了很多知识和经验。
通过实验,我对软件开发的基本原理和方法有了更深入的了解,也提升了自己的动手能力和问题解决能力。
下面我将结合每个实验内容,谈谈我的一些心得体会。
实验一:软件开发环境的搭建这个实验主要是通过安装和配置Java开发环境来完成。
在实验中,我首先了解了Java开发工具的种类和功能,然后选择了一个合适的开发工具,并正确安装和配置。
通过这个实验,我明白了一个好的开发环境对软件开发工作的重要性,以及如何解决环境配置中可能出现的问题。
这对以后的学习和工作都有很大的帮助。
实验二:面向对象程序设计这个实验是通过一个简单的示例程序来学习面向对象的程序设计。
在实验中,我学会了如何使用类和对象、继承和多态来实现一个功能完善的程序。
实验中的示例程序是一个图书管理系统,通过这个实验,我对面向对象的设计思想和编程方法有了更深入的理解。
当然,在实验过程中也遇到了一些问题,比如类之间的关系和依赖关系的设计等,但通过不断思考和尝试,最终都得到了解决。
这个实验让我认识到了面向对象编程的强大功能和优势,也让我更加坚信面向对象的程序设计方法是未来软件开发的主流方向。
实验三:界面设计与事件处理这个实验是通过一个GUI程序来学习界面设计和事件处理。
在实验中,我学会了使用Swing框架和AWT组件来设计用户界面,通过给组件添加事件监听器来处理用户操作。
实验中的示例程序是一个简单的计算器,通过这个实验,我对GUI程序的设计和实现有了更深入的了解。
在实验过程中,我也遇到了一些问题,比如布局管理器的选择和使用问题,事件处理的逻辑设计等,但通过参考相关资料和与同学的讨论,最终都得到了解决。
这个实验让我认识到了GUI程序开发的复杂性和挑战性,也让我对用户界面的设计有了更深入的思考。
实验四:文件读写与异常处理这个实验主要是学习文件的读写和异常处理。
在实验中,我学会了如何使用Java的I/O流来进行文件的读写操作,并学会了如何使用异常处理机制来处理文件操作中可能出现的错误。
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. 在实验过程中,重点是要区分好实例和类,灵活掌握类的调⽤。
多态编程实验报告

一、实验目的1. 理解多态的概念和原理。
2. 掌握多态编程的基本方法。
3. 通过实验加深对多态编程的理解和应用。
二、实验环境1. 操作系统:Windows 102. 编程语言:Java3. 开发工具:Eclipse三、实验内容1. 多态的基本概念2. 多态的实现方法3. 多态的应用实例四、实验步骤1. 多态的基本概念多态是指同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。
在Java中,多态主要通过继承和重写方法来实现。
2. 多态的实现方法(1)继承在Java中,通过继承可以实现多态。
子类继承父类的方法和属性,可以重写父类的方法,使得子类的方法具有多态性。
(2)重写方法重写方法是指在子类中重写父类的方法,使得子类的方法具有多态性。
重写方法必须满足以下条件:- 方法名、返回类型、参数列表与父类方法相同;- 子类和父类之间必须存在继承关系。
(3)方法重载方法重载是指在同一个类中,存在多个同名方法,但参数列表不同。
方法重载可以实现多态,因为根据传入的参数列表,可以调用不同的方法。
3. 多态的应用实例下面通过一个简单的例子来展示多态的应用。
(1)创建一个动物类```javapublic class Animal {public void makeSound() {System.out.println("Animal makes a sound");}}```(2)创建两个子类,分别代表狗和猫```javapublic class Dog extends Animal {@Overridepublic void makeSound() {System.out.println("Dog barks");}}public class Cat extends Animal {@Overridepublic void makeSound() {System.out.println("Cat meows");}}```(3)创建一个方法,接受一个Animal类型的参数,并调用其makeSound方法```javapublic class Test {public static void main(String[] args) {Animal dog = new Dog();Animal cat = new Cat();makeSound(dog);makeSound(cat);}public static void makeSound(Animal animal) {animal.makeSound();}}```输出结果:```Dog barksCat meows```通过上面的例子,我们可以看到,尽管我们传递的是Animal类型的参数,但在调用makeSound方法时,会根据实际对象的类型调用相应的方法,实现了多态。
《python语言实训》面向对象程序设计实验

《python语言实训》面向对象程序设计实验一、实验目的1、掌握面向对象程序设计的思想。
2、掌握类的定义。
3、掌握对象的创建和使用。
4、掌握属性和方法的访问控制、★△类属性和实例属性、类的方法。
5、掌握继承、多重继承、多态。
6、掌握程序流程控制语句、函数与模块、数据结构等知识内容与面向对象程序设计的综合应用。
二、实验内容1、对象的创建和使用,在Python中,用赋值的方式创建类的实例,创建对象后,通过实例对象访问这个类的属性和方法。
2、从面向过程到面向对象,面向过程程序设计采用自顶向下的方法,分析出解决问题所需要的步骤,将程序分解为若干个功能模块,每个功能模块用函数来实现。
3、定义属性、定义方法、创建实例对象、调用属性和方法。
4、构造方法,在生成对象时调用,可以用来进行一些属性初始化操作,不需要显示去调用,系统会默认去执行。
5、类方法、实例方法和静态方法,方法的访问控制使用。
6、类与对象的应用、属性与方法的应用。
7、类中内置的方法、类方法、实例方法、静态方法。
8、继承与多态的应用、面向对象程序设计案例的应用。
9、Python程序控制结构、数据结构、函数与模块与面向对象程序设计方法的综合案例。
三、主要实验设备及器材1、计算机终端1套(配备Windous10系统或Windows7系统,英特尔i5及以上的处理器,4G以上内存,256G硬盘)。
2、多媒体教学设备1套。
3、网络设备套件1套。
4、Python软件、PyCharm软件、Anaconda软件等Python软件1套。
四、实验步骤(1)演示性实验教师利用多媒体等设备,对本章节的知识在Python语言的相关软件上进行演练。
(2)验证性实验学生指对Python的语言对象有了一定了解,并提出自己的相关问题,然后学生利用实验室的电脑设备解决问题。
(3)设计性实验设计程序以解决金融工程中的计量分析问题。
2、实验步骤(1)Python的Car对象的创建。
(2)在精灵宝可梦游戏中创建小火龙角色,对给出的各个属性进行迭代和私有化。
实验五-牧场主与猎户的故事

牧场主与猎户的故事要说服一个人,最好的办法是为他着想,让他也能从中受益。
一个牧场主人养了许多羊。
他的邻居是个猎户,院子饲养了一群凶猛的猎狗。
这些猎狗经常跳过栅栏,袭击牧场里的羔羊。
牧场主人几次请猎户把狗关好,但猎户不以为然,口头上答应,可没过几天,他家的猎狗又跳进牧场横冲直闯,咬伤了好几只小羊。
忍无可忍的牧场主人找镇上的法官评理。
听了他的控诉,明理的法官说:“我可以处罚那个猎户,也可以发布法令让他把狗锁起来。
但这样一来你就失去了一个朋友,多了一个敌人。
你是愿意和敌人作邻居呢?还是和朋友作邻居?”“当然是和朋友作邻居。
”牧场主人说。
“那好,我给你出个主意,按我说的去做。
不但可以保证你的羊群不再受骚扰,还会为你赢得一个友好的邻居。
”法官如此这般交代一番。
牧场主人连连称是。
一到家,牧场主人就按法官说的挑选了3只最可爱的小羔羊,送给猎户的3个儿子。
看到洁白温顺的小羊,孩子们如获至宝,每天放学都要在院子与小羔羊玩耍嬉戏。
因为怕猎狗伤害到儿子们的小羊,猎户做了个大铁笼,把狗结结实实的锁了起来。
从此,牧场主人的羊群再也没有受到骚扰。
为了答谢牧场主人的好意,猎户开始送各种野味给他,牧场主人也不时用羊肉和奶酪回赠猎户,渐渐地两人成了好朋友。
要说服一个人,最好的办法是为他着想,让他也能从中受益。
现实世界中有太多的事情就像牢固的大山一样,是我们无法改变的,或至少是暂时无法改变的。
如果事情无法改变,我们就改变自己。
如果无法说服他人,是因为自己还不具备足够的说服力;如果别人不喜欢自己,是因为自己还不够让人喜欢;如果我们还无法成功,是因为我们自己暂时没有找到成功的方法。
想要事情改变,首先得改变自己。
只有改变自己,才会最终改变别人;只有改变自己,才可以最终改变属于自己的世界。
故事梗概:1. 背景:牧场主人养了许多羊,邻居猎户饲养了一群凶猛的猎狗。
2. 经过:(1)猎狗经常袭击牧场里的羔羊。
(2)牧场主人几次请猎户把狗关好(假定3~5次),但猎户不以为然,没几天,猎狗又咬伤了几只小羊(2~3只)。
Java程序设计实验报告2010

public void setab(inti, int j)
{ a=i; b=j; }
public void printab()
{ int sum=a+b;
System.out.println(“a+b=”+sum);
}
}
//B.java
packagepkg1.pkg2;
public class B
{ Exam3_6 d1=new Exam3_6();
System.out.print(”The current date is(year/month/day):”);
d1.outDate();
System.out.println( );
System.out.print(”Its tomorrow date is(year/month/day):”);
{ A x=new A();
A y=new A();
x.setab(5);
y.setab(10);
System.out.println(“x.a=”+x.geta()+”,y.a=”+y.geta());
x.setb(-5);
y.setb(-10);
System.out.println(“x.b=”+x.getb()+”,y.b=”+y.getb());
Its tomorrow is (year/month/day):2000/1/2
The current date is (year/month/day):2004/1/8
Is tomorrow is (year/month/day):2004/1/9
java实验报告

java实验报告Java 实验报告一、实验目的本次 Java 实验的主要目的是通过实际编程操作,深入理解和掌握Java 语言的基本语法、面向对象编程的概念和方法,以及常用类库的使用。
同时,培养我们的问题解决能力、逻辑思维能力和代码规范意识,为今后的软件开发工作打下坚实的基础。
二、实验环境1、操作系统:Windows 102、开发工具:Eclipse IDE for Java Developers3、 JDK 版本:JDK 18三、实验内容本次实验共包括以下三个部分:1、 Java 基本语法练习变量与数据类型运算符与表达式控制流语句(ifelse、for、while、dowhile)数组2、面向对象编程实践类与对象的定义和使用构造函数与方法重载封装、继承与多态抽象类与接口3、 Java 常用类库应用String 类与字符串操作集合框架(ArrayList、HashMap)文件输入输出(File、FileReader、FileWriter)四、实验步骤及代码实现1、 Java 基本语法练习变量与数据类型:```javapublic class VariableDataType {public static void main(String args) {int age = 20;double salary = 50005;String name ="张三";boolean isStudent = true;Systemoutprintln("年龄:"+ age);Systemoutprintln("工资:"+ salary);Systemoutprintln("姓名:"+ name);Systemoutprintln("是否是学生:"+ isStudent);}}```运算符与表达式:```javapublic class OperatorExpression {public static void main(String args) {int num1 = 10;int num2 = 5;int sum = num1 + num2;int difference = num1 num2;int product = num1 num2;int quotient = num1 / num2;int remainder = num1 % num2; Systemoutprintln("和:"+ sum);Systemoutprintln("差:"+ difference);Systemoutprintln("积:"+ product);Systemoutprintln("商:"+ quotient);Systemoutprintln("余数:"+ remainder);}}```控制流语句:```javapublic class ControlFlowStatement {public static void main(String args) {// ifelse 语句int score = 80;if (score >= 90) {Systemoutprintln("优秀");} else if (score >= 80) {Systemoutprintln("良好");} else if (score >= 70) {Systemoutprintln("中等");} else if (score >= 60) {Systemoutprintln("及格");} else {Systemoutprintln("不及格");}// for 循环for (int i = 1; i <= 5; i++){Systemoutprintln("第" + i +"次循环");}// while 循环int j = 1;while (j <= 5) {Systemoutprintln("第" + j +"次 while 循环");j++;}// dowhile 循环int k = 1;do {Systemoutprintln("第" + k +"次 dowhile 循环");k++;} while (k <= 5);}}```数组:```javapublic class ArrayExample {public static void main(String args) {//一维数组int numbers ={1, 2, 3, 4, 5};for (int num : numbers) {Systemoutprintln(num);}//二维数组int matrix ={{1, 2, 3},{4, 5, 6},{7, 8, 9}};for (int row : matrix) {for (int num : row) {Systemoutprint(num +"");}Systemoutprintln();}}}```2、面向对象编程实践类与对象的定义和使用:```javapublic class Person {private String name;private int age;public Person(String name, int age) {thisname = name;thisage = age;}public void showInfo(){Systemoutprintln("姓名:"+ name +",年龄:"+ age);}public static void main(String args) {Person person1 = new Person("张三", 20);person1showInfo();}}```构造函数与方法重载:```javapublic class ConstructorOverloading {private String name;private int age;public ConstructorOverloading(String name) {thisname = name;}public ConstructorOverloading(String name, int age) {thisname = name;thisage = age;}public void showInfo(){if (age == 0) {Systemoutprintln("姓名:"+ name);} else {Systemoutprintln("姓名:"+ name +",年龄:"+ age);}}public static void main(String args) {ConstructorOverloading person1 = new ConstructorOverloading("张三");person1showInfo();ConstructorOverloading person2 = new ConstructorOverloading("李四", 25);person2showInfo();}}```封装、继承与多态:```java//父类class Animal {private String name;public Animal(String name) {thisname = name;}public void eat(){Systemoutprintln(name +"正在吃东西");}}//子类继承父类class Dog extends Animal {public Dog(String name) {super(name);}public void bark(){Systemoutprintln(name +"在叫");}}public class InheritancePolymorphism {public static void main(String args) {Animal animal = new Dog("小黑");animaleat();//向下转型为 Dog 类型调用 bark 方法if (animal instanceof Dog) {Dog dog =(Dog) animal;dogbark();}}}```抽象类与接口:```java//抽象类abstract class Shape {abstract void draw();}//实现抽象类的子类class Circle extends Shape {@Overridevoid draw(){Systemoutprintln("画一个圆");}}//接口interface Moveable {void move();}//实现接口的类class Car implements Moveable {@Overridepublic void move(){Systemoutprintln("汽车在移动");}}public class AbstractInterfaceExample {public static void main(String args) {Shape shape = new Circle();shapedraw();Moveable car = new Car();carmove();}}```3、 Java 常用类库应用String 类与字符串操作:```javapublic class StringOperation {public static void main(String args) {String str1 ="Hello, ";String str2 ="World!";String str3 = str1 + str2;Systemoutprintln(str3);int length = str3length();Systemoutprintln("字符串长度:"+ length);char charAt = str3charAt(5);Systemoutprintln("第 5 个字符:"+ charAt);boolean contains = str3contains("World");Systemoutprintln("是否包含 World:"+ contains);}}```集合框架(ArrayList、HashMap):```javaimport javautilArrayList;import javautilHashMap;import javautilMap;public class CollectionFramework {public static void main(String args) {// ArrayListArrayList<String> names = new ArrayList<>();namesadd("张三");namesadd("李四");namesadd("王五");for (String name : names) {Systemoutprintln(name);}// HashMapHashMap<String, Integer> ages = new HashMap<>();agesput("张三", 20);agesput("李四", 25);agesput("王五", 30);for (MapEntry<String, Integer> entry : agesentrySet()){Systemoutprintln(entrygetKey()+"的年龄是" +entrygetValue());}}}```文件输入输出(File、FileReader、FileWriter):```javaimport javaioFile;import javaioFileReader;import javaioFileWriter;import javaioIOException;public class FileIOExample {public static void main(String args) {//写入文件try (FileWriter writer = new FileWriter("outputtxt")){writerwrite("这是写入文件的内容");} catch (IOException e) {eprintStackTrace();}//读取文件try (FileReader reader = new FileReader("outputtxt")){int character;while ((character = readerread())!=-1) {Systemoutprint((char) character);}} catch (IOException e) {eprintStackTrace();}}}```五、实验结果与分析1、 Java 基本语法练习变量与数据类型:能够正确定义和使用各种数据类型的变量,并进行基本的运算和输出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五继承与多态专业班级学号姓名实验学时 2 实验类型验证性实验地点数计学院实验中心实验时间指导老师实验成绩年月日一、实验目的:理解继承与多态的概念,掌握三种访问控制的区别,掌握抽象类、接口与包的应用。
二、实验内容:1. 参考教材P124,示例程序C5_17,掌握抽象类的应用。
2. 参考教材P128,示例程序C5_18,掌握接口的使用方法。
3. 参考教材P133,示例程序C5_20,掌握包的使用方法。
三、实验要求:1.完成示例程序的验证。
2.写出实验报告。
四、实验步骤与结果:(由学生按照实验内容完成)程序一package ch01;import java.applet.Applet;import java.awt.Graphics;abstract class Shapes //定义一个抽象类Shapes{public int x,y; //x、y为画图的坐标public int width,height;public Shapes(int x,int y,int width,int height){ this.x=x;this.y=y;this.width=width;this.height=height;}abstract double getArea( ); //求图形面积的抽象方法abstract double getPerimeter( ); //求图形周长的抽象方法}class Square extends Shapes //由抽象类Shapes派生的子类——矩形类{@Overridepublic double getArea( ){return(width*height);}@Overridepublic double getPerimeter( ){return(2*width+2*height);}public Square(int x,int y,int width,int height){ super(x,y,width,height); }}class Triangle extends Shapes //由抽象类Shapes派生的子类——三角形类{public double c; //斜边@Overridepublic double getArea( ){return(0.5*width*height);}@Overridepublic double getPerimeter( ){return(width+height+c);}public Triangle(int x,int y,int base,int height){super(x,y,base,height);c=Math.sqrt(width*width+height*height);}}class Circle extends Shapes //由抽象类Shapes派生的子类——圆类{public double r; //半径@Overridepublic double getArea( ){return(r*r*Math.PI);}@Overridepublic double getPerimeter( ){return(2*Math.PI*r);}public Circle(int x,int y,int width,int height){super(x,y,width,height);r=(double)width/2.0;}}public class Ch01 extends Applet{Square Box=new Square(5,15,25,25);Triangle tri=new Triangle(5,50,8,4);Circle Oval=new Circle(5,90,25,25);@Overridepublic void paint(Graphics g){//画正方形g.drawRect(Box.x,Box.y,Box.width,Box.height);g.drawString("Box Area:"+Box.getArea( ),50,35);g.drawString("Box Perimeter:"+Box.getPerimeter( ),50,55);g.drawString("tri Area:"+tri.getArea( ),50,75);g.drawString("tri Perimeter:"+tri.getPerimeter( ),50,95);g.drawOval(Oval.x,Oval.y,Oval.width,Oval.height); //画圆g.drawString("oval Area:"+Oval.getArea( ),50,115);}}程序二package ch02;import java.applet.Applet;import java.awt.Graphics;interface Shapes //定义一个接口{abstract double getArea( ); //自动被定义为publicdouble getPerimeter( );}class Square implements Shapes //类要实现接口{public int x,y;public int width,height;@Overridepublic double getArea( ){return(width*height);}@Overridepublic double getPerimeter( ){return(2*width+2*height);} public Square(int x,int y,int width,int height){this.x=x;this.y=y;this.width=width;this.height=height;}}class Triangle implements Shapes //类要实现接口{public int x,y;public int width,height;public double c;@Overridepublic double getArea( ){return(0.5*width*height);}@Overridepublic double getPerimeter( ){return(width+height+c);} public Triangle(int x,int y,int base,int height){this.x=x;this.y=y;width=base;this.height=height;c=Math.sqrt(width*width+height*height);}}class Circle implements Shapes //类要实现接口{public int x,y;public int width,height;public double r;@Overridepublic double getArea( ){return(r*r*Math.PI);}@Overridepublic double getPerimeter( ){return(2*Math.PI*r);}public Circle(int x,int y,int width,int height){this.x=x;this.y=y;this.width=width;this.height=height;r=(double)width/2.0;}}public class Ch02 extends Applet{ Square Box=new Square(5,15,25,25);Triangle tri=new Triangle(5,50,8,4);Circle Oval=new Circle(5,90,25,25);@Overridepublic void paint(Graphics g){g.drawRect(Box.x,Box.y,Box.width,Box.height);g.drawString("Box Area:"+Box.getArea( ),50,35);g.drawString("Box Perimeter:"+Box.getPerimeter( ),50,55);g.drawString("tri Area:"+tri.getArea( ),50,75);g.drawString("tri Perimeter:"+tri.getPerimeter( ),50,95);g.drawOval(Oval.x,Oval.y,Oval.width,Oval.height);g.drawString("oval Area:"+Oval.getArea( ),50,115);}}程序三package ch03;import java.applet.Applet;import java.awt.Graphics;interface Shapes{ abstract double getArea( );abstract double getPerimeter( );}class Coordinates{int x,y;public Coordinates(int x,int y){this.x=x;this.y=y;}}//Square Coordinates Shapesclass Square extends Coordinates implements Shapes{public int width,height;@Overridepublic double getArea( ){return(width*height);}@Overridepublic double getPerimeter( ){return(2*width+2*height);} public Square(int x,int y,int width,int height){super(x,y);this.width=width;this.height=height;}}class Triangle extends Coordinates implements Shapes {public int width,height;public double c;@Overridepublic double getArea( ){return(0.5*width*height);}@Overridepublic double getPerimeter( ){return(width+height+c);} public Triangle(int x,int y,int base,int height){super(x,y);width=base;this.height=height;c=Math.sqrt(width*width+height*height);}}class Circle extends Coordinates implements Shapes{public int width,height;public double r;@Overridepublic double getArea( ){return(r*r*Math.PI);}@Overridepublic double getPerimeter( ){return(2*Math.PI*r);}public Circle(int x,int y,int width,int height){super(x,y);this.width=width;this.height=height;r=(double)width/2.0;}}public class Ch03 extends Applet{Square Box=new Square(5,15,25,25);Triangle tri=new Triangle(5,50,8,4);Circle Oval=new Circle(5,90,25,25);@Overridepublic void paint(Graphics g){g.drawRect(Box.x,Box.y,Box.width,Box.height);g.drawString("Box Area:"+Box.getArea( ),50,35);g.drawString("Box Perimeter:"+Box.getPerimeter( ),50,55);g.drawString("tri Area:"+tri.getArea( ),50,75);g.drawString("tri Perimeter:"+tri.getPerimeter( ),50,95);g.drawOval(Oval.x,Oval.y,Oval.width,Oval.height);g.drawString("oval Area:"+Oval.getArea( ),50,115);}}四、实验步骤与结果:程序一:程序二:程序三:五、总结通过实验加深了我对继承与多态的概念的理解,继承就是子类可以继承父类中的属性和方法。