实验三 继承、多态和图形用户界面

合集下载

实验三_类的重载继承和多态

实验三_类的重载继承和多态

课程名称面向对象程序设计实验名称实验三、类的重载继承和多态日期2015.10.23学生学号班级实验目的:1.编写一个单一继承的C#程序2.编写一个抽象类,并用一个类继承这个抽象类实验要求:1.认真阅读、掌握和本实验相关的教材内容。

2.设计并编写代码完成题目要求的任务。

3.撰写实验报告。

实验内容与步骤:1.在学校教务管理系统中,有三种用户,一种是系统管理员,一种是学生,一种是教师,编写C#类实现该继承关系。

系统管理员/学生/教师都有用户名和密码属性,并都有Login和显示自身信息的方法,另外,学生拥有班级和成绩两个特殊属性以及查询成绩这一方法,教师拥有部门和工资两个特殊属性以及查询工资这一方法,系统管理员可以添加学生和教师信息。

由于教师和学生个人信息不同,所以学生和教师重载基类的DisplayInfo方法。

(本例和教材一致,再次出现的目的是通过反复训练,理解继承的作用)1)类的继承关系可以表示如下:2)创建控制台应用程序,命名为SchoolManagement3)创建名为User的基类,基类定义了用户名和密码属性,以及Login和DisplayInfo方法using System;//显示教师信息,查询工资teacher.DisplayPersonInfo();teacher.checkSalary();Console.WriteLine("------------------------------");//显示学生信息,查询成绩stu.DisplayPersonInfo();stu.CheckScore();Console.WriteLine("------------------------------");}}}6)最终运行效果如下2.建立名为Shape的基类,要求是抽象类,在该类中提供一个public abstract double Area()的抽象方法,建立名为Circle的派生类,包括半径属性,实现面积计算,再建立一个名为Rectangle的派生类,包括长和宽两个属性,实现面积的计算。

实验3(Java)(2011)(图形用户界面)

实验3(Java)(2011)(图形用户界面)

实验3 图形用户界面1、编程程序实现如图1所示的计算器,并实现全部功能。

图1计算器2、设计一个Java程序,显示修改密码界面,并实现“确定”与“取消”按钮的功能。

Mima.javapublic class Mima {public static void main(String args[]){PasswordWindow win = new PasswordWindow();win.setTitle("带密码框的窗口");}}PasswordWindow.javaimport java.awt.*;import javax.swing.*;import java.awt.event.*;public class PasswordWindow extends JFrame {JTextField area;JPasswordField inputPassword;JTextField textShow;PasswordListener listener;JButton getNumber,c1,c2;Box baseBox,boxV1,boxV2;public PasswordWindow(){setLayout(new java.awt.FlowLayout());init();setBounds(10,10,330,150);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}void init(){inputPassword = new JPasswordField(16);textShow=new JTextField(16);textShow.setEditable(false);listener = new PasswordListener();listener.setJTextField(textShow);area= new JTextField(25);c1.addFocusListener(this);add(c1);inputPassword.addActionListener(listener);boxV1= Box.createVerticalBox();boxV1.add(new JLabel("请输入密码"));boxV1.add(Box.createVerticalStrut(8));boxV1.add(new JLabel("您所输入的密码是:"));boxV1.add(Box.createVerticalStrut(8));boxV2=Box.createVerticalBox();boxV2.add(inputPassword);boxV2.add(Box.createVerticalStrut(8));boxV2.add(textShow);boxV2.add(Box.createVerticalStrut(8));baseBox=Box.createHorizontalBox();baseBox.add(boxV1);baseBox.add(Box.createHorizontalStrut(10));baseBox.add(boxV2);add(baseBox);c1=new JButton("确定");add(c1);c2=new JButton("取消");add(c2);}public void actionPerformed(ActionEvent e){if ( e.getSource()==c1){area.setText("fdas");}}}PasswordListener.javaimport java.awt.event.*;import javax.swing.*;public class PasswordListener implements ActionListener{ JTextField textShow;public void setJTextField(JTextField t){textShow= t;}public void actionPerformed(ActionEvent e){JPasswordField passwordText =(JPasswordField)e.getSource();char []password =passwordText.getPassword();String str= new String(password);textShow.setText(str);}}3、设计一个Java程序,显示用户登录界面,并根据登录情况显示相应的提示信息。

软件设计模型中的继承与多态应用

软件设计模型中的继承与多态应用

软件设计模型中的继承与多态应用在软件设计模型中,继承与多态是两种非常重要的概念。

它们能够帮助我们更高效地编写面向对象的代码,从而提高我们的开发效率和代码质量。

本文将简要介绍继承和多态的概念,以及它们在软件设计模型中的应用。

继承是一种面向对象编程中的基本概念。

它允许我们从一个类中派生出另一个类,使得子类能够继承父类的属性和方法。

子类可以重写父类的方法,并且还可以定义自己的属性和方法。

通过使用继承,我们可以更好地组织和管理代码,从而使代码更容易被复用和维护。

多态是指对象能够表现出多种形态。

在面向对象编程中,多态的实现有两种方式:虚函数和模板。

虚函数可以通过函数指针实现,在类的定义中将函数声明为虚函数,派生类中重写父类的虚函数,就可以使得对象在运行时表现出多种不同的行为。

模板则允许我们定义一种通用的类型,能够接受多种不同的参数类型,从而在运行时实现多态。

继承和多态在软件设计模型中的应用非常广泛。

例如,在图形用户界面编程中,一个按钮可以作为一个基类,派生出多个不同的子类,每个子类都有自己的样式和行为。

这种继承关系可以非常好地组织和管理代码,并且使得不同的按钮可以共享相同的基本属性和方法。

另一个例子是在游戏编程中,一个游戏角色可以作为一个基类,派生出多个不同的子类,每个子类都有自己独特的特性和能力。

通过使用继承和多态,可以使得游戏开发更加高效和灵活。

总之,继承和多态是软件设计模型中极其重要的概念。

它们不仅能够使得代码更容易被组织和管理,还能够提高代码的可重用性和可维护性。

当我们在进行面向对象的编程时,一定要注意继承和多态的使用,从而使我们的代码更加优雅和高效。

类的继承与多态性实验报告

类的继承与多态性实验报告

类的继承与多态性实验报告目录1.介绍2.什么是多态3.多态在Java中的技术基础4.示例5.多态的好处6.总结介绍之前的文章介绍过类的封装性和继承性,现在是时候聊聊面向对象编程的三大特性之一的最后一个类的多态性了。

多态的基础是继承(包括了接口的实现)和方法的覆盖。

什么是多态多态对应的英文单词是polymorphism,百度翻译给出的翻译是:n.多型现象,多态性; 多机组合形式;按字面意思就是多种状态、形态、姿态等等,潜台词就是某个东西具有多种状态、形态、姿态等等。

那是什么东西呢?在面向对象的编程语言里面(当然就包括Java了)就是某个方法或函数。

那方法的多种状态、形态、姿态有是个什么意思呢?这其实是指同一个方法具有多个方法体,就是方法的实现。

而方法的相同与否是由方法签名决定的。

所以,多态其实本质上是指同一个类的同一个方法却具有不同的行为特征。

状态、形态、姿态指的就是行为特征。

多态在Java中的技术基础然而,在Java中,同一个类里面是不可能存在两个签名相同而实现不同的方法的,否则的话会导致无法判断该执行哪个方法,因此在编译时就会报错。

所以,肯定是在两个类中才有可能存在两个签名相同而实现不同的方法,一个实现在这个类,另一个实现在另一个类。

而如果这两个类毫无瓜葛,那么肯定就与多态的本质(同一个类的同一个方法却具有不同的行为特征)自相矛盾了。

所以,这两个类肯定是有某种联系的。

我们再想想,什么概念是能够让两个不同的类却又能称为同一个类的?答案就是类的继承/扩展,就是现实中的“某东西是某类东西”的概念,就是“具体和抽象”的思想。

比如,男人是人,女人也是人,男人类和女人类就借助于人类建立了某种联系,而人类具有的某个行为在男人类和女人类中是有着不同体现的,比如人类的吃饭这个行为,男人类的体现是狼吞虎咽,女人类的体现是细嚼慢咽。

例子不是很恰当,但意思就是这么个意思。

所以说,Java里面多态的技术基础就是方法的覆盖,当然,在Java中覆盖不仅仅发生在类的继承/扩展上,还可能发生在接口的实现上。

构成基础实训总结

构成基础实训总结

构成基础实训总结构成基础实训总结一、前言实训是大学生学习的重要组成部分,尤其对于计算机相关专业的学生来说,实训更是不可或缺的一环。

本文将对构成基础实训进行全面详细地总结,以期为读者提供有益的参考。

二、实训概述1. 实训目的:通过构成基础实训,使学生掌握Java语言编程基础知识和相关技能。

2. 实训时间:通常为一个学期。

3. 实训内容:(1)Java语言基础知识:数据类型、运算符、流程控制语句等;(2)面向对象编程:类与对象、继承与多态、接口与抽象类等;(3)图形用户界面设计:Swing组件使用方法、事件处理等;(4)数据库编程:JDBC连接数据库、SQL语句执行等。

三、实验环境1. 操作系统:Windows 10。

2. 集成开发环境:Eclipse。

3. 数据库软件:MySQL。

四、实验过程1. 实验一:Java语言程序设计基础。

(1)任务要求:① 编写一个程序,输出“Hello, World!”;② 编写一个程序,输入两个整数并求它们的和;③ 编写一个程序,输入三个整数并求它们的平均值。

(2)实验步骤:① 安装Eclipse;② 创建Java项目;③ 创建Java类,并编写程序;④ 运行程序,查看输出结果。

2. 实验二:面向对象编程。

(1)任务要求:① 编写一个类,表示一个学生的信息(姓名、年龄、性别、学号等);② 编写一个类,表示一个课程的信息(课程名称、学分、授课教师等);③ 编写一个类,表示选课系统中的一门选修课(包括课程信息和学生信息)。

(2)实验步骤:① 在Eclipse中创建Java项目和Java类;② 分别编写三个类,并实现它们之间的关联关系;③ 编写测试用例,验证程序正确性。

3. 实验三:图形用户界面设计。

(1)任务要求:编写一个简单的计算器程序,包括加减乘除四种运算功能。

(2)实验步骤:① 使用Swing组件创建GUI界面;② 实现四种运算功能,并在GUI界面中显示计算结果。

实验三 继承和多态

实验三 继承和多态

实验三继承和多态一、实验目的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方法,分别用于设置和获取教师的工资。

《Java程序设计》上机实验报告 实验三 面向对象程序设计的继承、多态等特性的练习

《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.思考题:某小型公司,主要有三类人员:经理、兼职技术人员和兼职推销员。

实验三 图形界面程序的界面设计

实验三   图形界面程序的界面设计

实验三图形界面程序的界面设计一、实验目的1、掌握Java图形界面程序设计的基本思想和步骤。

2、掌握JDK中A WT包和Swing包的基本使用方法和区别。

3、掌握容器和布局的概念和使用。

4、掌握图形界面程序的界面设计方法和步骤。

二、实验内容自己编写所有代码,设计一个程序的界面。

其中界面设计时的顶层容器要求使用JFrame(或Frame),界面上的“简易计算器”、“运算数一”、“运算数二”、“运算结果”这些提示标签使用组件JLable(或Lable),输入运算数和输出运算数结果使用JTextField(TextField),“相加”、“相减”和“全部清零”使用按钮JButton(或Button)。

请注意查阅JDK的API文档中这些相关的类,看看它们具有哪些构造函数可以用来生成所需的对象,它们具有哪些方法用来进行调用。

注意保存好本次实验代码,下一次实验将会要求实现其事件处理以继承完善。

四、分析设计过程首先,利用建立一个JFrame容器,设计容器的大小,并且用setVisible(true)设为可视,定义界面上的“简易计算器”、“运算数一”、“运算数二”、“运算结果”的标签,并且定义“相加”、“相减”和“全部清零”使用按钮,并且要用setSize()和setLocation()排布好这些按钮以及标签的位置,并且一定要用要用add()方法把这些标签和按钮添加到容器中。

这样子就行了。

五、测试数据和程序运行的结果六、问题与总结整个逻辑思路并不困难,因为只要是懂得Frame容器的定义,JButton,Label等些知识,而老师在例子中给了很多相似的例子,就比较容易。

在我做这个实验的时候,遇到比较困难的地方就是,给标签、按钮的排布,之前一直不是这个按钮不见就是这个标签看不到,而具体的原因是我不懂得各个标签、按钮的比例。

导致,很多东西都无法在界面上显示出来。

七、附录import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;public class Jiemian extends JFrame implements ActionListener{JFrame jfr=new JFrame("Basic Application");//定义一个Frame容器的对象jfrLabel l1=new Label("简易计算器");//定义各个标签Label l2=new Label("运算数一");Label l3=new Label("运算数二");Label l4=new Label("运算结果");JTextField tf1=new JTextField(15);//定义各个JTextField类型的组件,并生成对象实例JTextField tf2=new JTextField(15);JTextField tf3=new JTextField(15);JButton b1=new JButton("相加");//定义各个按钮JButton b2=new JButton("相减");JButton b3=new JButton("全部清零");public Jiemian(){j fr.setSize(260,350);//设计界面的大小jfr.setLayout(null);//设计为null布局l1.setSize(90,30);//设计11的宽度和高度l1.setLocation(80,20);//设计11在界面上左上角的位置坐标l2.setSize(60,30);l2.setLocation(30,70);l3.setSize(60,30);l3.setLocation(30,120);l4.setSize(60,30);l4.setLocation(30,170);tf1.setSize(100,30);tf1.setLocation(120,70);tf2.setSize(100,30);tf2.setLocation(120,120);tf3.setSize(100,30);tf3.setLocation(120,170);b1.setSize(60,30);b1.setLocation(50,220);b2.setSize(60,30);b2.setLocation(140,220);b3.setSize(100,30);b3.setLocation(80,270);jfr.add(l1);//添加到容器上jfr.add(l2);jfr.add(l3);jfr.add(l4);jfr.add(tf1);jfr.add(tf2);jfr.add(tf3);jfr.add(b1);jfr.add(b2);jfr.add(b3);jfr.setLocation(500,150);jfr.setVisible(true);}public static void main(String args[]) { Jiemian ja=new Jiemian();}}。

实验三 图形用户界面设计(汽院含答案)学习资料

实验三  图形用户界面设计(汽院含答案)学习资料

实验三图形用户界面设计(汽院含答案)实验三图形用户界面设计实验目的1.掌握Java语言中GUI编程的基本方法2.掌握Java语言中AWT组件的基本用法3.掌握Java语言中Swing组件的基本用法实验导读1.通过图形用户界面(GUI:Graphics User Interface),用户和程序之间可以方便地进行交互。

AWT(Abstract Windowing Toolkit),中文译为抽象窗口工具包,是Java提供的用来建立和设置Java的图形用户界面的基本工具。

AWT由Java中的java.awt 包提供,里面包含了许多可用来建立与平台无关的图形用户界面(GUI)的类,这些类又被称为组件(components)。

Swing是一个用于开发Java应用程序用户界面的开发工具包。

它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。

Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。

JDK写程序所有功能都是靠虚拟机去操作本地操作系统。

比如window 下,就是JDK用windows API实现功能。

而awt包中很多组件是组件自身去调用本地操作系统代码swing包中的组件采用的是调用本地虚拟机方法,由虚拟机再调用本地操作系统代码。

意思就是中间多了一层,这样就加强了swing包的移植性,与本地关系不那强了。

图3.1 AWT常用组件继承关系图Container为容器,是一个特殊的组件,该组件中可以通过add方法添加其他组件进来。

2.布局,容器中的组件的排放方式。

常见的布局管理器:FlowLayout(流式布局管理器):从左到右的顺序排列。

Panel默认的布局管理器。

BorderLayout(边界布局管理器):东,南,西,北,中。

Frame默认的布局管理器。

GridLayout(网格布局管理器):规则的矩阵CardLayout(卡片布局管理器):选项卡GridBagLayout(网格包布局管理器):非规则的矩阵3.类JFrame是java.awt.Frame 的扩展版本,该版本添加了对 JFC/Swing 组件架构的支持,常用方法如下:1)JFrame() 该构造方法可以创建一个无标题的窗口,窗口的默认布局为BorderLayout布局。

实习课题14:面向对象——继承与多态

实习课题14:面向对象——继承与多态

实习课题14:面向对象思想——继承与多态实训目的●会使用继承的方式编写子类●会使用多态的方式编写程序●会使用super调用父类构造方法实训目标使用editplus编写主题类、回复类具有如下功能:●主题类继承帖子类,并增加属性:主题id,版块id●回复类继承帖子类,并增加属性:回复id,主题id●在帖子类中实现多态●使用super调用父类构造方法实训内容练习一:创建主题类需求说明:创建主题类,继承帖子类(如图所示)实现思路:1.创建主题类:Topic,继承帖子类:Tip2.增加以下属性:主题id:int topicId版块id:int boarded3.添加setter/getter方法4.使用从帖子类继承来的getInfo()方法,输出主题信息、练习二:创建回复类需求说明:1. 创建回复类:Reply ,继承帖子类:Tip2. 增加以下属性:a) 回复id :int replyIdb) 主题id :int topicId3. 添加setter/getter 方法4. 使用从帖子类继承来的getInfo ()方法,输出回复信息练习三:多态需求说明:主题类、回复类重写帖子类输出信息的方法继承实现思路:1、主题类重写getInfo()方法,输出主题信息2、回复类重写getInfo()方法,输出回复信息3、创建测试类,在测试类中使用多态的方式调用getInfo()方法练习四:super关键字需求说明:1、为主题类添加无参构造方法,在该方法中使用super(),并输出“主题类的无参构造方法”2、为主题类添加有参构造方法,参数同Tip类有参构造方法,在该方法中使用super(pTitle,pContent,pTime),并输出“主题类的有参构造方法”3、创建测试类,使用测试类测试主题类构造方法。

实验三类的重载继承和多态

实验三类的重载继承和多态

2)创建控制台应用程序,命名为SchoolManagement3)创建名为User的基类,基类定义了用户名和密码属性,以及Login和DisplayInfo方法using System;using System.Collections.Generic;using System.Text;namespace SchoolManagement{public class User{private string userName;//用户名public string Name{get { return userName; }set { userName = value; }}private string password;//密码public string Password{get { return password; }set { password = value; }}private string userType;//用户类型2.建立名为Shape的基类,要求是抽象类,在该类中提供一个public abstract double Area()的抽象方法,建立名为Circle的派生类,包括半径属性,实现面积计算,再建立一个名为Rectangle 的派生类,包括长和宽两个属性,实现面积的计算。

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace GetArea{class Program{static void Main(string[] args){Console.WriteLine("请?输º?入¨?圆2的Ì?半ã?径?:");double r=double.Parse (Console.ReadLine ());shape s = new Circle(r);}public Rectangle(double side, double high){this.side = side;this.high = high;}public override double Area(){return side * high;}}}}最终运行效果如下实验总结(结论或问题分析):本次实验我对基类、抽象类、派生类有了近一步的了解,知道了怎么建立这些类,还有在抽象类中创建抽象方法。

java 实验3 继承与多态

java 实验3  继承与多态

Java程序设计实验报告题目:继承与多态学院:计算机科学学院专业:08教育技术学01班姓名:赵小龙学号:40809020105继承与多态一、实验目的1.掌握类的继承方法。

2.掌握变量的继承和覆盖。

3.掌握方法的继承、重载和覆盖。

4.了解接口的实现方法。

二、实验内容1.运行下面的程序,理解成员变量的继承与隐藏。

2.运行下面的程序,理解方法的继承。

3.运行下面的程序,理解方法的重载。

4.运行下面的程序,理解方法的覆盖。

5.定义两个接口,其方法协议分别完成两个数的加法和减法操作,然后创建一个类实现这两个接口的方法。

三、思考题1.子类重新定义与父类方法的方法头完全相同的方法,这种情况称为什么?答:这种情况称为重写。

2.同名的不同方法共存的情况称为什么?如何区分这些同名方法?答:一般来说,分为两种情况。

一是在同一个类里面有两个或两个以上的同名的方法,这些方法的名字相同,但参数不同,这种情况中叫重载。

当你调用方法时,会根据你传进去的参数的类型来决定调用哪个方法。

二是一个类继承了另外一个类,子类中有和父类中一样的方法,这两个方法不仅名字相同,参数也相同,这种情况叫方法覆盖。

也就是在子类中重新定义父类中已有的方法。

当你创建一个子类的实例后调用这个方法,就会按照你在子类中新定义的方法来实现。

3.创建一个类,声明一个无参数的构造函数,打印类已创建的信息;再重载一个具有String参数的构造函数,打印参数信息;并创建主类验证之。

四、实验心得通过这次实验,我了解到了类的继承方法、掌握变量的继承和覆盖、掌握方法的继承、重载和覆盖、了解接口的实现方法,这方面的知识有很大的提高,并且自己有一定的见解。

这些在我以后学习java编程上面有很大的帮助,我想对我以后java的编程一定会打好坚实的基础。

《面向对象程序设计》实验指导书

《面向对象程序设计》实验指导书

《⾯向对象程序设计》实验指导书《⾯向对象程序设计》实验指导书郭⽟柱⼴东商学院信息学院⼆0⼀0 年⼗⼆⽉⽬录实验⼀ Java基础实验实验⼆ Java⾯向对象特性试验--Java中的类、对象和⽅法实验三类的继承、多态、接⼝、访问控制符与修饰符实验四 Java资源及其利⽤实验五 Java 语⾔的异常处理实验六输⼊输出流实验七图形⽤户界⾯设计实验⼋ Java Applet及多线程试验附录1 实验报告格式实验⼀ Java 基础实验⼀、实验⽬的与要求1. 学习编写简单的Java 程序。

2. 学习掌握Java 基本数据类型及其基本运算。

3. 学习掌握Java 的基本流程控制语句。

⼆、相关知识1. 了解JDK 的⼯作环境,以及如何使⽤JDK 进⾏编程。

2. 熟悉集成软件 eclipse3.5及其使⽤。

⼆、实验内容1. 编写Hello.java 程序并运⾏。

2. ⽤Java 语⾔编写⼀个应⽤程序在屏幕上输出1000之内的素数。

3. ⼀个数如果恰好等于它的因⼦之和,这个数就称为“完数”,⽐如28=1+2+4+7+14。

编写⼀个应⽤程序在屏幕上输出1000之内的完数。

4. 求满⾜1!+2!+3!+ …+n!≤9999的最⼤整数n 。

5. ⼀个三位的整数如果它的各位数字的⽴⽅之和等于这个三位数,就称此数为⽔仙花数,⽐如 333173371++=,编写⼀个应⽤程序在屏幕上输出所有⽔仙花数。

6. 下⾯程序的输出结果是什么?实验⼆ Java⾯向对象特性试验-Java中的类、对象和⽅法⼀、实验⽬的与要求1. 掌握类的定义和使⽤。

2. 掌握对象的声明、创建和使⽤。

3. 掌握构造⽅法的定义和使⽤。

4. 掌握类⽅法(静态⽅法)和⾮类⽅法(⾮静态⽅法)的区别和使⽤。

5. 掌握成员变量和局部变量的区别和使⽤。

⼆、实验内容1. 编写⼀个Java程序,定义⼀个表⽰学⽣的类,类名Student,其成员变量有:学号、班级姓名、性别、年龄;成员⽅法:(1)获得班号(2)获得姓名(3)获得年龄(4)修改年龄;创建⼀个Student的对象,修改该对象的年龄,并输出该对象的年龄。

实验三Java图形用户界面编程

实验三Java图形用户界面编程
static Double subNumber;
static Double mulNumber;
static Double divNumber;
static Double equalNumber;
static Double temp;
static JTextArea result=new JTextArea(1,20);
四.程序代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;//导入类包
class simplecalculator
{
static String point=new String();
static String Amal=new String();
static String SIX=new String();
static String SEVEN=new String();
static String EIGHT=new String();
static String NINE=new String();
static String ZERO=new String();
ForResult.add(result);
ForButton7_clear.setLayout(FLO);
ForButton7_clear.add(seven);
ForButton7_clear.add(eight);
ForButton7_clear.add(nine);
ForButton7_clear.add(div);
ForButton1_sub.add(FenZhiYi);
ForButton0_equal.setLayout(FLO);

csharp继承和多态实验报告

csharp继承和多态实验报告

实验报告三继承和多态一、实验目的本实验的目的是熟练学习和掌握继承和多态并能灵活运用。

二、实验内容及结果(一)、题目的要求:设计基本几何图形的继承层次结构,并编程实现其中的主要类型,要求通过抽象方法、虚拟方法和重载方法来计算各种图形的面积和周长。

1、程序编程思路:首先定义一个shape类,然后通过抽象方法、虚拟方法和重载方法来计算各种图形(如圆和正方形)的面积和周长2、程序源码:static void Main(string[] args){Console.WriteLine("请输入圆的半径:");double r = double.Parse(Console.ReadLine());shape v1 = new circle(r);Console.WriteLine("该圆的周长为{0},面积为{1}",v1.length(),v1.area());Console.WriteLine("请输入正方形的边长:");double edge = double.Parse(Console.ReadLine());v1 = new square(edge);Console.WriteLine("该正方形的周长为{0},面积为{1}", v1.length(),v1.area());Console.ReadLine();}}public abstract class shape{public abstract double area();public abstract double length();}public class circle:shape{private double r;public double R{get { return r; }set { r = value; }}public override double area(){return Math.PI * Math.Pow(r, 2);}public override double length(){return Math.PI * 2 * r;}public circle(double r){this.r = r;}}public abstract class fouredge : shape{public override abstract double area(); public override abstract double length(); }public class square : fouredge{private double edge;public double Edge{get { return edge; }set { edge = value; }}public override double area(){return Math.Pow(edge, 2);}public override double length(){return 4*edge;}public square(double edge){this.edge = edge;}3、实验结果:二、实验效果对这个题目,要熟记抽象方法、虚拟方法和重载方法,掌握本章继承和多态的思想。

继承与多态实验报告

继承与多态实验报告

继承与多态实验报告继承与多态实验报告在面向对象编程中,继承和多态是两个重要的概念。

通过继承,我们可以创建新的类,并从现有的类中继承属性和方法。

而多态则允许我们使用父类的引用来指向子类的对象,实现同一操作具有不同的行为。

本实验旨在通过实际的编程实践,加深对继承和多态的理解。

实验一:继承在这个实验中,我们创建了一个动物类(Animal),并从它派生出了两个子类:狗类(Dog)和猫类(Cat)。

动物类具有一些共同的属性和方法,如名字(name)和发出声音(makeSound)。

子类继承了父类的属性和方法,并可以添加自己的特定属性和方法。

在编写代码时,我们首先定义了动物类,并在其中实现了共同的属性和方法。

然后,我们创建了狗类和猫类,并分别在这两个类中添加了自己的特定属性和方法。

通过继承,我们可以在子类中直接使用父类的方法,并且可以根据需要进行重写。

实验二:多态在这个实验中,我们使用多态的概念来实现一个动物园的场景。

我们定义了一个动物园类(Zoo),并在其中创建了一个动物数组。

这个数组可以存储不同类型的动物对象,包括狗、猫等。

通过多态,我们可以使用动物类的引用来指向不同类型的动物对象。

例如,我们可以使用动物类的引用来指向狗对象,并调用狗类特有的方法。

这样,我们可以统一处理不同类型的动物对象,而不需要为每种类型编写特定的处理代码。

实验三:继承与多态的结合应用在这个实验中,我们进一步探索了继承和多态的结合应用。

我们定义了一个图形类(Shape),并从它派生出了三个子类:圆形类(Circle)、矩形类(Rectangle)和三角形类(Triangle)。

每个子类都实现了自己的特定属性和方法。

通过继承和多态,我们可以在图形类中定义一些通用的方法,如计算面积和周长。

然后,我们可以使用图形类的引用来指向不同类型的图形对象,并调用相应的方法。

这样,我们可以轻松地对不同类型的图形进行统一的处理。

结论:通过本次实验,我们进一步理解了继承和多态的概念,并学会了如何在编程中应用它们。

实验三 继承和多态

实验三 继承和多态

实验三继承和多态一、实验目的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.编写一测试类,对其进行编译、运行。

实验三 继承、多态和图形用户界面

实验三 继承、多态和图形用户界面

实验三字符串与文本(上课被教师验收的同学不用提交实验结果,并注意在教师处签名。

未完成的同学请提交实验结果,即将程序直接粘贴至本DOC文件,并在邮件名的标题中注明:学号+姓名+实验三)1.给出下面程序的输出:2.直接给出下面程序的运行结果:B's constructor is invokedA's constructor is invoked2. 下面的说法对的注明“True”,错的注明“False”(1)子类是父类的一个子集。

( F )(2)当从子类调用一个构造函数时,它的父类的无参构造方法总是被调用。

( f )(3)可以覆盖定义在父类中的私有方法。

( f ) (4)可以覆盖定义在父类中的静态方法。

( F )(5) 如果子类中的一个方法和它的父类中的方法具有完全相同的方法头,但返回值类型不同,也可以构成覆盖。

F(6) 可以给面板添加一个框架。

f(7) 可以给框架添加一个面板。

t3. 指出下面程序中的问题:This.radius=radiusThis.length=lengthSuper.getArea()*length4.下面的程序是要在框架中显示一个按钮,但是什么也没有显示出来。

这个程序有什么问题?Test frame=new Test();5.填空:(1)在类上使用public,protected,(default) 修饰符,才能使同一个包中的类可以访问它,而不同包中的类不能访问它。

(2)在类上使用public 修饰符,才能使不同包中的类不能访问这个类,而任何包中的子类可以访问它。

6. 在程序清单11-9中,MyStack是用组合实现的,现请扩展ArrayList,利用继承来实现MyStack。

编写一个测试程序,提示用户输入五个字符串,然后以逆序显示这些字符串。

7. 编写程序,创建一个ArrayList,然后向这个线性表中添加一个Object对象、一个Date 对象、一个字符串、一个JFrame对象,然后使用循环调用对象的toString( )方法,来显示线性表中所有的元素。

实验三 建立图形用户界面

实验三 建立图形用户界面

实验3 建立图形用户界面一、实验目的了解图形用户界面基本组件窗口、按钮、文本框等的使用方法,了解如何使用布局管理器对组件进行管理,以及如何使用Java 的事件处理机制。

二、实验要求1.掌握在容器(Frame,Applet,Panel)中添加组件的方法,掌握使用布局管理器对组件进行管理的方法。

2.理解Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法。

3.掌握编写独立运行的窗口界面的方法。

三、实验内容(一)创建图形用户界面图形用户界面(Graphic User Interface ,简称GUI)是为方便用户使用设计的窗口界面,在图形用户界面中用户可以看到什么就操作什么,取代了在字符方式下知道是什么后才能操作什么的方式。

组件(Component)是构成GUI 的基本要素,通过对不同事件的响应来完成和用户的交互或组件之间的交互。

组件一般作为一个对象放置在容器(Container)内,容器是能容纳和排列组件的对象,如Applet、Panel(面板)、Frame(窗口)等。

通过容器的add 方法把组件加入到容器中。

1.在Applet 中添加标签、按钮并使用网格布局(1)程序功能:在Applet 容器中添加组件标签、按钮,并使用网格布局管理器排列组件在容器中的位置。

(2)编写LX3_1.java 程序文件,源代码如下。

import java.awt.*;import java.applet.Applet;public class LX3_1 extends Applet {Label l1;Button b1, b2, b3, b4, b5, b6;public void init() {setLayout(new GridLayout(3,3));// 设置网格布局(3 行3 列共9 个网格)l1=new Label("标签1");b1 = new Button("按钮1");b2 = new Button("按钮2");b3 = new Button("按钮3");b4 = new Button("按钮4");add(l1);add(b1);add(b2);add(b3);add(new Label());add(b4);add(new Button("按钮5"));add( new Button("按钮6"));add(new Label("标签2"));}}(3)编译程序LX3_1.java。

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

实验三字符串与文本
(上课被教师验收的同学不用提交实验结果,并注意在教师处签名。

未完成的同学请提交实验结果,即将程序直接粘贴至本DOC文件,并在邮件名的标题中注明:学号+姓名+实验三)
1.给出下面程序的输出:
2.直接给出下面程序的运行结果:
B’s constructor is invoked
A’s constructor is invoked
2. 下面的说法对的注明“True”,错的注明“False”
(1)子类是父类的一个子集。

(T )(2)当从子类调用一个构造函数时,它的父类的无参构造方法总是被调用。

(T )(3)可以覆盖定义在父类中的私有方法。

( F)
(4)可以覆盖定义在父类中的静态方法。

( F )
(5) 如果子类中的一个方法和它的父类中的方法具有完全相同的方法头,但返回值
类型不同,也可以构成覆盖。

T
(6) 可以给面板添加一个框架。

T
(7) 可以给框架添加一个面板。

F
3. 指出下面程序中的问题:
子类B不能直接调用父类A中的方法Circle来为父类的私有数据radius赋值
4.下面的程序是要在框架中显示一个按钮,但是什么也没有显示出来。

这个程序有什么问
题?
frame是javax.swing.JFrame的对象,不是test的,应该讲第六行改为test frame = new test();
5.填空:
(1)在类上使用protected 修饰符,才能使同一个包中的类可以访问它,而不同包中的类不能访问它。

修饰符,才能使不同包中的类不能访问这个类,而任何包中的子类可以访问它。

6. 在程序清单11-9中,MyStack是用组合实现的,现请扩展ArrayList,利用继承来实现MyStack。

编写一个测试程序,提示用户输入五个字符串,然后以逆序显示这些字符串。

源代码为:
import java.util.Scanner;
public class MyStack extends java.util.ArrayList{
public int getSize(){
return this.size();
}
public Object peek(){
return this.get(this.getSize()-1);
}
public Object pop(){
Object o = this.get(this.getSize()-1);
this.remove(this.getSize()-1);
return o;
}
public void push(Object o){
this.add(o);
}
public int search(Object o){
return stIndexOf(o);
}
public static void main(String[] args){
MyStack stack = new MyStack();
Scanner input = new Scanner(System.in);
String[] s = new String[5];
for (int i=0;i<5;i++){
System.out.println("请输入第"+(i+1)+"个字符串");
s[i] = input.nextLine();
stack.push(s[i]);
}
System.out.println("其倒序输出为:");
while(stack.size()>0)
System.out.println(stack.pop());
}
}
7. 编写程序,创建一个ArrayList,然后向这个线性表中添加一个Object对象、一个Date 对象、一个字符串、一个JFrame对象,然后使用循环调用对象的toString( )方法,来显示线性表中所有的元素。

源代码为:
import java.util.*;
import javax.swing.*;
public class testArrayList {
public static void main(String[] args) {
java.util.ArrayList newList = new java.util.ArrayList();
Object object = new Object();//创建object类对象
Date date = new Date();//创建Date类对象
String string = new String("we are young");//创建string类对象
JFrame frame = new JFrame("call me maybe");//创建JFrame类对象
newList.add(object);//将Object对象加入线性表
newList.add(date);//将Date对象加入线性表
newList.add(string);//。

newList.add(frame);//。

System.out.println(newList.toString());//调用tostring输出}
}
8. 编写程序,显示如下计算器的界面。

源代码为:
import java.awt.*;
import javax.swing.*;
public class TestPanels extends JFrame{
public TestPanels(){
JPanel p1 = new JPanel();
p1.setLayout(new GridLayout(5,3));//创建面板
for(int i = 1;i<=9;i++){
p1.add(new JButton(""+i));//向面板中加入元素1~9
}
p1.add(new JButton(""+0));
p1.add(new JButton("+"));
p1.add(new JButton("-"));
p1.add(new JButton("X"));
p1.add(new JButton("/"));
p1.add(new JButton("="));//向面板中加入非数字类元素
JPanel p2 = new JPanel(new BorderLayout());//创建新面板
p2.add(p1,BorderLayout.CENTER);//将面板一作为新面板的子面板
add(p2,BorderLayout.EAST);//为新面板分配位置
add(new JButton("7+2="),BorderLayout.CENTER);//在面板中央添加元素}
public static void main(String[] args){
TestPanels frame = new TestPanels();//创建TestPanels类对象frame
frame.setTitle("简易计算器界面");//设置标题
frame.setSize(400,500);//设置面板框大小
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}。

相关文档
最新文档