实验五:java中类的重用

合集下载

Java继承与多态

Java继承与多态
Java中的继承是实现软件重用的重要手段,通过继承可以更有效地组织程序结构,明确类之间的关系,并充分利用已有的类来创建新类,实现代码的重用。子类可以方法。同时,Java中的多态可以统一多个相关类的对外接口,并在运行时根据不同的情况执行不同的操作,提高类的抽象度和灵活性。在Java中,类的层次结构是严格的,除Object类外,每个类都继承唯一的父类,形成了树状结构。定义一个子类时,需要使用extends关键字并指定父类名。虽然此文档主要讨论了继承和多态的概念,但接口在Java中也是实现多态性的关键方式之一,它允许不同的类实现相同的接口,从而实现了行为的多样性。在实际编程中,可以通过创建接口并定义方法,然后让不同的类实现这些接口,来练习Java的继承和多态。

java实验5图形用户界面设计试验

java实验5图形用户界面设计试验

java实验5图形⽤户界⾯设计试验常⽤布局1)、流布局: FlowLayout 从左到右,⾃上⽽下⽅式在容器中排列,控件的⼤⼩不会随容器⼤⼩变化.容器.setLayout(new FlowLayout(FlowLayout.LEFT));2)、⽹格布局: GridLayout 按照指定⾏数与列数,将容器分成⼤⼩相等的单元格每个单元格放置⼀个控件. 不能将控件放在指定单元格 容器.setLayout(new GridLayout(3,4,10,15));3)、边界布局: BorderLayout 将容器分成东、西、南、北、中五个部分 容器.setLayout(new BorderLayout()); 窗⼝的内容⾯板默认布局就是边界布局。

容器.add(控件,BorderLayout.NORTH);4)、混合布局: 使⽤JPanel,将多个布局组合在⼀起使⽤5)、绝对布局 null: 以坐标定位 容器.setLayout(null); 每个控件在放置在容器之前,必须设置其边界 setBounds(x,y,width,height); btn.setBounds(10,100,30,60);常⽤事件1)、事件源 EventSource:能够触发事件控件如:JButton,JTextField,JFrame,JComboBox,....2)、事件 Event:ActionEvent,KeyEvent,WindowEvent,TextEvent,...3)、事件侦听者Listener(接⼝) ActionListener,WindowListener,...class A implements ActionListener{public void actionPerformed(ActionEvent e){....}}A lis=new A();4)、事件处理函数public void actionPerformed(ActionEvent e){....}事件流程:事件源触发事件-->事件源侦听者接收事件-->⾃动调⽤相应事件处理函数.实践编程1.在应⽤程序窗体中安排1个⽂本框,⼀个标签。

JAVA实验7

JAVA实验7

浙江经贸职业技术学院实训报告系部______________ 班级____________ 姓名____________ 学号_______________日期______________ 地点____________ 指导教师_____________ 成绩实验七JAVA 面向对象编程(3)【实验目的】1.掌握JAVA语言类的定义和使用。

2.掌握JAVA语言对象的声明和使用。

3.掌握JAVA语言构造方法的概念和使用。

4.掌握类及其成员的访问控制符的区别和使用。

【预习内容】1. JAVA 类的定义格式;2.JAVA对象的使用三步骤:声明、创建以及初始化;3.访问控制修饰符:public、private和protected的功能和区别;4.JAVA构造方法的概念和特点;5.JAVA多态的概念,及重载和覆盖的区别;【实验内容及步骤】1.上机验证题1.阅读下面的程序,在main()方法里添加语句完成如下功能:(1)创建一个MyValue类的对象myValue.(2)为myValue对象中的value域赋值10。

(3)使用getVaule()方法获得myValue对象中的数据并将它打印在屏幕上。

class MyValue {private int value;public void setValue(int x) {value = x;}public int getValue() {return value;}}public class UseValue {public static void main(String args[]) {MyValue myvalue = new MyValue();myvalue.setValue(10);System.out.println(myvalue.getValue());}}[程序运行过程]2.(1)程序功能:通过LX7_1_P类产生子类LX7_2,其不仅具有父类的成员变量xm(姓名)、xh(学号),还定义了新成员变量xy(学院)、xi(系)。

JAVA实验

JAVA实验

Java实验报告专业班级学号姓名指导教师实验一、安装JDK并熟悉java的运行环境一、实验目的熟悉JA V A的运行环境及学习简单的编程。

二、预习内容安装工具软件的基本方法。

三、实验设备与环境装有JA V A语言工具软件(JCreator )的微机若干四、实验内容安装JCreator及JA V A的核心编译程序J2SDK。

1、打开JCreator的安装盘安装JCreator。

2、在相同目录下安装J2SDK。

3、打开JCreator软件对J2SDK文件进行配置。

4、编写一应用程序,在屏幕上显示“HELLO WORLD”。

public class Hello{public static void main(String args[]){System.out.println( "HELLO WORLD");}}5、编写一小程序实现上述功能:在屏幕上显示“HELLO WORLD”。

实验结果:五、注意事项⒈认真填写实验报告⒉遵守实验室各项制度,服从实验指导教师的安排⒊按规定的时间完成实验六、实验总结与体会1.通过这个实验我了解到java的运行环境。

2.通过这个简单的程序使我认识到做实验是要认真对待,不可马虎大意,区分字母的大小写和符号的正确使用。

实验二、基本语法练习一、实验目的⒈熟悉Java的基本语法⒉编写应用程序接收命令行参数⒊编写应用程序接收用户从键盘的输入⒋掌握字符串与数组的基本方法二、预习内容java编程的基本结构三、实验设备与环境装有JA V A语言工具软件(JCreator )的微机若干四、实验内容⒈编写一个应用程序求若干个数的平均数,原始数字要求从命令行输入。

应用程序中main方法的参数String类型的数组args能接受用户从命令行键入的参数。

(1)编辑A verage.java,设保存在D:\myjava目录下。

public class Average{public static void main(String args[ ]){double n,sum=0;for (int l=0;l<args.length;l++){sum=sum+Double.valueOf(args[l]).doubleValue();}n=sum/args.length;System.out.println("average="+n);}}(2)编译。

实验题目——精选推荐

实验题目——精选推荐

实验题⽬⾯向对象编程(Java)——实验教学⼤纲内容⼦类与继承——三种⼈ (1)1、相关知识点 (1)2、实验⽬的 (1)3、实验要求 (1)4、实验指导 (2)⼦类与继承——计算利息(2014.11.20) (3)1、相关知识点 (3)2、实验⽬的 (3)3、实验要求 (3)4、实验指导 (4)5、思考题 (4)组件及事件处理——布局与⽇历(2014.11.28) (5)1、相关知识点 (5)2、实验⽬的 (5)3、实验要求 (5)4、实验指导 (6)5、思考题 (6)⼦类与继承——三种⼈1、相关知识点由继承⽽得到的类称为⼦类,被继承的类称为⽗类(超类),Java不⽀持多重继承,即⼦类只能有⼀个⽗类。

⼈们习惯地称⼦类与⽗类的关系是“is-a”关系。

如果⼦类和⽗类在同⼀个包中,那么⼦类⾃然地继承了其⽗类中不是private的成员变量作为⾃⼰的成员变量,并且也⾃然地继承了⽗类中不是private的⽅法作为⾃⼰的⽅法。

继承的成员变量或⽅法的访问权限保存不变。

⼦类和⽗类不在同⼀个包中时,⽗类中的private和友好访问权限的成员变量不会被⼦类继承,也就是说,⼦类只继承⽗类中的protected和public访问权限的成员变量作为⼦类的成员变量;同样,⼦类只继承⽗类中的protected和public访问权限的⽅法作为⼦类的⽅法。

⼦类声明的成员变量的名字和从⽗类继承来的成员变量的名字相同时,将隐藏所继承的成员变量。

⽅法重写是指⼦类中定义的⼀个⽅法,这个⽅法的类型和⽗类的⽅法的类型⼀致或者是⽗类⽅法的类型的⼦类型,并且这个⽅法的名字、参数个数、参数类型和⽗类的⽅法完全相同。

⼦类如此定义的⽅法称为⼦类重写的⽅法。

⼦类继承的⽅法所操作的成员变量⼀定是被⼦类继承或隐藏的成员变量。

重写⽅法既可以操作继承的成员变量,调⽤继承的⽅法,也可以操作⼦类新声明的成员变量,调⽤新定义的其他⽅法,但⽆法操作被⼦类隐藏的成员变量和⽅法。

java方法重载和重写

java方法重载和重写

java方法重载和重写方法重载:就是在同一个类中,方法的名字相同,但参数个数、参数的类型或返回值类型不同!方法重写:它是指子类和父类的关系,子类重写了父类的方法,但方法名、参数类型、参数个数必须相同!Java方法的重写与重载一、方法的重写。

1、重写只能出现在继承关系之中。

当一个类继承它的父类方法时,都有机会重写该父类的方法。

一个特例是父类的方法被标识为final。

重写的主要优点是能够定义某个子类型特有的行为。

class Animal {public void eat(){System.out.println ( Animal is eating.}}class Horse extends Animal{public void eat(){System.out.println ( Horse is eating.}}2、对于从父类继承来的抽象方法,要么在子类用重写的方式设计该方法,要么把子类也标识为抽象的。

所以抽象方法可以说是必须要被重写的方法。

3、重写的意义。

重写方法可以实现多态,用父类的引用来操纵子类对象,但是在实际运行中对象将运行其自己特有的方法。

public class Test {public static void main (String[] args) {Animal h = new Horse();h.eat();}}class Animal {public void eat(){System.out.println ( Animal is eating.}}class Horse extends Animal{public void eat(){System.out.println ( Horse is eating.}public void buck(){}}一个原则是:使用了什么引用,编译器就会只调用引用类所拥有的方法。

如果调用子类特有的方法,如上例的h.buck(); 编译器会抱怨的。

安徽工业大学——java实验报告

JAVE实验报告学号129074401姓名李阳班级网124指导教师柯栋梁安徽工业大学计算机学院2015年1月实验一: 利用JAVA 反射技术分析类结构自己定义的类:package chap05;public class analysis {private int a;private char c;protected int b;public double d;public void test1(){}private void test2(){}protected double test3(){return 1.0;}}用java反射技术分析输出的结果:Enter class name (e.g. java.util.Date):chap05.analysisclass chap05.analysis{public chap05.analysis();public void test1();private void test2();protected double test3();private int a;private char c;protected int b;public double d;}1.分析程序运行时的输出结果。

输出的结果中显示了被分析类的方法与变量,包括这些方法与变量的修饰符2.分析与JAVA反射技术相关的几个类的作用:ng.reflect.Constructor;Constructor 提供关于类的单个构造方法的信息以及对它的访问权限。

ng.reflect.Field;Field 提供有关类或接口的单个字段的信息,以及对它的动态访问权限。

反射的字段可能是一个类(静态)字段或实例字段。

ng.reflect.Method;Method 提供关于类或接口上单独某个方法(以及如何访问该方法)的信息。

所反映的方法可能是类方法或实例方法(包括抽象方法)。

ng.reflect.Modifier;Modifier 类提供了static 方法和常量,对类和成员访问修饰符进行解码。

JAVA重写和重载

JAVA重写和重载方法的重写Overriding和重载Overloading是Java多态性的不同表现。

重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。

Overloaded的方法是可以改变返回值的类型。

也就是说,重载的返回值类型可以相同也可以不同。

1、重载(Overloading)a、方法重载是让类以统一的方式处理不同类型数据的一种手段。

多个同名函数同时存在,具有不同的参数个数/类型。

重载Overloading是一个类中多态性的一种表现。

b、Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。

调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。

c 、重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。

无法以返回型别作为重载函数的区分标准。

2、重写(Overriding)a、父类与子类之间的多态性,对父类的函数进行重新定义。

如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。

在Java中子类可继承父类中的方法,而不需要重新编写相同的方法。

但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。

方法重写又称方法覆盖。

b、若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。

如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。

this指示当前。

c、子类函数的访问修饰权限不能少于父类的;重写是子类的方法覆盖父类的方法,要求方法名和参数都相同重载是在同一个类中的两个或两个以上的方法,拥有相同的方法名,但是参数却不相同,方法体也不相同,最常见的重载的例子就是类的构造函数,可以参考API帮助文档看看类的构造方法.构造方法和普通方法都能重载吗?2.构造方法和普通方法都能重写吗?3.重写的话是子类中的方法覆盖同名父类方法?重载的话覆盖是怎样的呢?(多同名方法情况下哪个覆盖哪个?)1 能2 能3 重写是方法名相同,参数也相同,重载是方法名相同,参数不同首先我们来讲讲:重载(Overloading)(1)方法重载是让类以统一的方式处理不同类型数据的一种手段。

Java中封装、继承、多态的理解

Java中封装、继承、多态的理解Java中的继承、封装、多态继承的理解:1、继承是⾯向对象的三⼤特征之⼀,也是实现代码复⽤的重要⼿段。

Java的继承具有单继承的特点,每个⼦类只有⼀个直接⽗类。

2、Java的继承通过extends关键字来实现,实现继承的类被称为⼦类,被继承的类称为⽗类(有的也称其为基类、超类),⽗类和⼦类的关系,是⼀种⼀般和特殊的关系。

就像是⽔果和苹果的关系,苹果继承了⽔果,苹果是⽔果的⼦类,⽔果是苹果的⽗类,则苹果是⼀种特殊的⽔果。

3、Java使⽤extends作为继承的关键字,extends关键字在英⽂是扩展的意思,⽽不是继承。

为什么国内把extends翻译成继承呢?除了与历史原因有关外,把extends翻译成为继承也是有其道理的:⼦类扩展⽗类,将可以获得⽗类的全部属性和⽅法,这与汉语中得继承(⼦辈从⽗辈那⾥获得⼀笔财富成为继承)具有很好的类似性。

值得指出的是:Java的⼦类不能获得⽗类的构造器。

4、实例:class BaseClass{public double weight;public void info() {System.out.println("我的体重是"+weight+"千克");}}public class ExtendsDemo001 extends BaseClass {public static void main(String[] args) {//创建ExtendsDemo001对象ExtendsDemo001 ed = new ExtendsDemo001();//ExtendsDemo001本⾝没有weight属性,但是ExtendsDemo001的⽗类有weight属性,也可以访问ExtendsDemo001对象的属性ed.weight = 56;//调⽤ExtendsDemo001对象的info()⽅法();}}打印结果为:我的体重是56.0千克5、Java类只能有⼀个⽗类。

object类的常用6个方法

object类的常用6个方法Object类是Java中所有类的根类,定义了一些通用的方法,它的方法可以应用于所有的Java对象。

在下面,我将介绍Object类的六个常用方法。

1. equals(Object obj)方法:equals方法是Object类提供的用于比较两个对象是否相等的方法。

默认情况下,equals方法比较的是两个对象的引用是否相等,即比较两个对象是否指向同一个内存地址。

如果需要实现自定义的相等比较,我们需要重写equals方法。

例如,我们可以在自定义的类中重写equals方法来比较类中的某个属性是否相等,从而确定两个对象是否相等。

2. hashCode()方法:hashCode方法返回对象的哈希码值。

哈希码值是根据对象的内容计算得出的一个整数,可以用于判断两个对象是否相同。

在默认情况下,hashCode方法返回的是对象的存储地址的整数表示。

通常情况下,我们需要重写hashCode方法和equals方法,保证它们的行为一致性,即如果equals方法返回相等,那么hashCode方法返回的哈希码值也应该相等。

3. toString()方法:toString方法返回对象的字符串表示。

默认情况下,toString方法返回的是类的名称加上对象的哈希码值的十六进制表示。

例如,对于Object类的实例,toString方法返回的是字符串"ng.Object@哈希码值"。

我们可以通过重写toString方法来返回我们希望的字符串表示,例如,返回对象的某个属性等。

4. getClass()方法:getClass方法返回对象所属的类的Class对象。

Class对象是Java中用来表示类的对象,我们可以通过Class对象获取类的名称、类的方法、类的属性等信息。

例如,我们可以通过对象的getClass方法获取对象所属的类的名称。

例如,Object类的getClass方法返回的是Class对象"ng.Object"。

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

实验五:关于java中类的重用
一.实验目的
1.理解继承的概念,了解其在程序设计中的作用;
2.熟悉类的继承定义方法,熟练地由系统类或者自定义的类派生出子类,并熟
知子类对继承自父类的成员的访问性;
3.理解属性隐藏与方法覆盖(重写)的概念,并会调用父类中被隐藏的属性或
被覆盖的方法;
4.理解在子类中调用父类的构造方法的原则与方法;
5.理解终结类、终结方法、抽象类、抽象方法的概念与特点;
6.理解组合和继承的区别,知道何时使用哪种方法。

7.掌握本章提到的Java基础类库中的一些常见类,如String、StringBuffer、
Math、Date、Calendar等;
8.了解JAR文件的概念、jar命令的格式,会创建可执行的jar文件。

二.实验内容
2.1 类的继承
1.设计并实现一个MyGraphic类及其子类MyRectangle:
(1) MyGraphic类包括两个属性:线条的颜色lineColor与填充颜色fillColor,
方法包括:
无参构造方法——用于初始化lineColor与fillColor分别为黑色与红色;
带两个参数的构造方法——用形参给成员变量进行初始化;
get/set方法——用于获取和修改属性值;
print方法——用于输出属性值。

(2) 矩形类MyRectangle有长、宽两个私有属性,方法有:构造方法、get/set
方法、计算周长与面积的方法,其中在构造方法中调用父类MyGraphic的构造方法初始化父类继承来的两个属性,并初始化本类定义的属性。

(3) 定义测试类创建MyGraphic和MyRectangle的对象,调用相应方法输出
颜色,对于矩形对象还要求周长、面积最后输出。

2.定义一个类Person,并由该类做基类派生出一个子类Employee。

其中:(1) Person类具有name、age两个保护成员变量,分别为String类型、整型。

该类的构造方法用于对成员变量进行初始化,要求定义一个无参构造方法与一个有两个参数的构造方法,在无参构造方法中调用有参构造方法。

(2)Employee类具有保护成员变量empno,类型为整型。

该类也定义一个无
参构造方法与一个有参构造方法对成员变量进行初始化,在这两个构造方法中分别调用父类的无参与有参构造方法。

(3)编写测试类对Person类与Employee类进行测试。

3.定义一个抽象基类Shape,它包含一个属性Color、一个非抽象方法getColor( ),一个抽象方法getArea( ),从Shape类派生出Rectangle和Circle 类,定义这两个类的成员变量、构造方法,实现父类的getArea( )方法计算
对象的面积。

编写应用程序使用Rectangle类和Circle类。

4.定义一个学生类Student及其子类班长类StudentBZ:
(1) Student类中的属性包括:学号、姓名、3门课的成绩、总分、平均分;方
法包括:
a) 一个无参构造方法与一个带4个参数的构造方法;
b) 成员变量相应的get/set方法用于获取与设置成员变量值;
c) 实例方法input( )用于输入学号、姓名、3门课的成绩;total( )用于统计每
个学生的总分;average( )方法用于计算平均分(3门课总和/3);toString( )
方法返回学生的信息。

d) 类方法void Max(Student stu[],int n)求出成绩最高者,并输出该生的学号、
姓名、3门课的成绩以及平均分。

(2) 子类StudentBZ的属性包括:responsibilities(职责),manageStuds(所
管理的学生);重写父类的average( )方法,班长的平均分=3门课总和/3+5;
重写toString( )方法输出班长的信息。

(3) 定义测试类,对包含5个学生对象的数组进行测试,调用input方法输入
数据后求总分,最后找出最高分者。

定义一个班长对象,将5个学生对象作为其管理的学生对象,并输出班长的各项信息。

2.2 类的组合
1.(1) 定义一个类Person,具有name、age两个私有成员变量,分别为String 类型、整型。

要求定义一个无参构造方法与一个有两个参数的构造方法对成员变量进行初始化;定义各成员变量的get/set方法,重写toString方法。

(2) 由Person类派生出一个子类Employee,包括年薪及受雇日期,定义该类
的无参与有参构造方法,在这些构造方法中分别调用父类的构造方法;定义各成员变量的get/set方法,重写toString方法;
(3) 定义一个MyDate类(日期类)作为受雇日期,其中包括年、月、日属性,
定义该类的构造方法以及各成员的get/set方法。

(4) 定义一个测试类,创建具有3个元素的Employee对象数组,调用相应方
法将对象的基本情况输出并分析各个构造方法的执行顺序。

2.3 系统类的使用
1.查阅Java API文档,了解java.text.SimpleDateFormat类,使用该类及相关方法,将系统当前时间格式化为图示的格式输出。

2.查阅Java API文档,了解String 类,分析以下语句的输出结果:
(1) 定义字符串s:String s=”Micrsoft公司”; 执行char c=s.charAt(9);语句后,c 的值为________。

(2) 以下语句执行后输出的结果是________。

String s0 = new String( "hello,Java!" );
System.out.println(s0.length() );
(3) 以下语句执行后输出的结果是________。

String s1=new String("AAA");
String s2=new String("AAA");
boolean b1=s1.equals(s2);
boolean b2=(s1==s2);
System.out.print(b1+" "+b2);
(4) 下面程序段输出的结果是________。

String s1="Java",s2="java";
System.out.println( s1.equalsIgnoreCase( s2 ));
(5) 下面程序段输出的结果是________。

String s1="Abc",s2="Bcd";
System.out.println( pareTo( s2 ));
(6)下面的程序段执行完后,cont的值是多少________。

String strings[]={ "string", "starting","strong", "street" ,"soft"};
int cont=0;
for ( int i = 0; i < strings.length; i++ )
if ( strings[ i ].endsWith( "ng" ) )
cont++;
(7) 定义字符串:String str = "abcdefg"; 则str.indexOf( 'd' ) 的结果是________。

(8) 下面的程序段输出的结果是________。

StringBuffer buf1;
String str="北京2008";
buf1=new StringBuffer(str);
System.out.println(buf1.charAt(2));
(9) 下面的程序段输出的结果是________。

StringBuffer buf1;
String str="007beijing";
buf1=new StringBuffer(str);
buf1.setCharAt(0,'6');
System.out.println( buf1.toString() );
(10) 若有如下赋值语句:
x = new StringBuffer().append("a").append(4).append("c").toString();
x的类型是_______;它的值是_______。

2.4 jar命令的使用
将2.1与2.2中编写的各个应用程序压缩打包生成可执行的jar文件,并在命令行下运行这些jar文件。

3.思考题
(1) 子类可以访问父类中哪些访问控制符修饰的成员?
(2) 方法覆盖(重写)的概念?它与方法重载的区别。

4.实验报告内容
(1)实验内容
定义一个抽象基类Shape,它包含一个属性Color、一个非抽象方法getColor( ),一个抽象方法getArea( ),从Shape类派生出Rectangle和Circle类,这两个类都用getArea( )方法计算对象的面积。

编写应用程序使用Rectangle类和Circle类。

(2)实验目的
(3)实验步骤
(4)遇到的问题
(5)实验结果与实验心得。

相关文档
最新文档