第五周实验继承与多态

更新时间:2023-03-08 07:16:19 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Java程序设计实验西南交大信息学院陈帆(2014) 实验内容 姓 名 专 业 第五周实验 继承与多态 学号 成 绩 班 级 日 期 【实验目的】 ? 理解面向对象编程的核心特性:继承和多态 ? super和this的应用 一、类的继承 填空,完成并运行程序。写下程序运行结果并回答问题。 理解创建新类B(通过继承现有类A)的方法,使新类B具有类A的功能,并添加新的功能,编写主类考查通过继承创建的类B与父类A 程序01: class A{ int i,j; void showij(){System.out.println(\} class B { //B类继承A类的属性和方法 int k; void showk(){System.out.println(\void sum(){System.out.println(\} public class M1{ public static void main(String args[]){ A father =new A(); B son=new B(); father.i=10;father.j=20; //使用父类A中的方法 son.i=7;son.j=8;son.k=9; //使用子类B从父类A中继承的方法 //使用子类B新增的方法showk() son.sum(); } } 思考题: 1、将父类A中的成员变量i声明为private,编译时观察有哪几处错误? 2、在程序一中的子类B中添加语句:int i,j;(对父类A中的同名变量i,j 进行了重新定义)观察运行结果有什么不同?为什么?这种现象称为什么? 3、在程序一中在子类B中添加成员方法: void showij(){System.out.println (“覆盖了父类的成员方法”);} (对父类A中的同名方法进行重新定义)观察运行结果有什么不同?为什么?这种现象称为什么? 第1页共13页

Java程序设计实验西南交大信息学院陈帆(2014) 【实验结果与分析】 将程序补充完整如下: package text2; class A{ int i,j; void showij(){System.out.println(\} class B extends A { //B类继承A类的属性和方法 int k; void showk(){System.out.println(\void sum(){System.out.println(\} public class M1 { public static void main(String args[]){ A father =new A(); B son=new B(); father.i=10;father.j=20; father.showij(); //使用父类A中的方法 son.i=7;son.j=8;son.k=9; son.showij();//使用子类B从父类A中继承的方法 son.showk(); //使用子类B新增的方法showk() son.sum(); } } 运行结果如下: 第2页共13页

Java程序设计实验西南交大信息学院陈帆(2014) 思考题: 答:(1)将父类A中的成员变量i声明为private,编译时子类B不能继承父类A的私有成员i。并且不能调用使用了i的方法。 (2)在程序一中的子类B中添加语句:int i,j;(对父类A中的同名变量i,j 进行了重新定义)观察运行结果如下 因为i,j被重新定义,B的对象调用自己类的成员变量,且并没有对其赋值,所以为0。这种现象称为变量重写。 (3)在程序一中在子类B中添加成员方法: void showij(){System.out.println (“覆盖了父类的成员方法”);} (对父类A中的同名方法进行重新定义)观察运行结果如下: 因为B类的同名成员方法覆盖了父类的成员方法,则最后调用的是B类的成员方法。这种现象称为方法重写(覆盖)。 ________________________________________________________________________________ 二、类的多态性 目的:将功能相近的方法用同一名字表示。 如何区分:用参数表的个数、类型和顺序来区分相同名字而功能不同的方法。 题目02:完成程序二中主类中的主方法,内容包括: (1) 用类Intsort创建对象s (2) 显示输出两个数的排序10,25 (3) 显示输出三个数的排序10,25 ,17 程序02: class Intsort{ public String sort(int a,int b){ //定义两个数排序的方法 第3页共13页

Java程序设计实验西南交大信息学院陈帆(2014) if(a>b)return a+” ”+b; else return b+” ”+a; } public String sort(int a,int b,int c){ int swap; if(a

if(a>b) return a+\ else return b+\Java程序设计实验西南交大信息学院陈帆(2014) } public class M2 { public static void main(String args[]){ } } 结果为: Intsort s=new Intsort(); s.sort(10, 25); s.sort(10, 25, 17); } 三、构造方法的重载 重载构造方法的目的: 提供多种初始化对象的能力,使程序员可以根据实际需要选用合适的构造方法来初始化对象。 03、编辑、编译、运行下面java程序,理解Java构造方法的重载 class RunDemo { private String userName, password; RunDemo() { System.out.println(\ } RunDemo(String name) { userName=name; } RunDemo(String name, String pwd) { this(name); password=pwd; check(); } 第5页共13页

Java程序设计实验西南交大信息学院陈帆(2014) void check() { String s=null; if (userName!=null) s=\用户名:\ else s=\用户名不能为空!\ if (password!=\ s=s+\ 口令无效!\ else s=s+\ 口令:********\ System.out.println(s); } } public class D1 { public static void main(String[] args) { new RunDemo(); new RunDemo(\ new RunDemo(null,\ new RunDemo(\ } } 要求:给出程序的运行结果 _______________________________________________________________ 【实验结果与分析】 04、编程,设计一个人类Human,有属性姓名name、性别sex、年龄age和身高height,有思考行为think;设计一个继承人类的学生类Pupil,有属性学号stuNo,有学习行为learn;再设计一个继承学生类的大学生类Student,有自学行为study;最后设计一个入口类TestStudent,构造若干个大学生,并把大学生们的属性和行为一一列举出来。 提示:运行结果参考如下。 第6页共13页

Java程序设计实验西南交大信息学院陈帆(2014) 图 运行界面 部分程序参考如下。 class Human { //人类 String name; char sex; ... public void think(){ System.out.println(this.name + \在思考……\ } Human() {} Human(String n, char s, int a, double h) { name = n; sex = s; ... } } class Pupil extends Human { //学生类 String stuNo; public void learn() { System.out.println(this.name + \在学习……\ } Pupil () {} Pupil (String no, String n, char s, int a, double h) { super(n, s, a, h); ... } } class Student extends Pupil { //大学生类 public void study() { System.out.println(this.name + \在自学……\ } Student() {} Student (String no, String n, char s, int a, double h) { ... } } public class TestStudent { //入口类 public static void main(String args[]) { Student s1 = new Student(\张三\男', 18, 170); System.out.println(s1.name + \,学号\,\,\岁,身高第7页共13页

Java程序设计实验西南交大信息学院陈帆(2014) \s1.think() ; ... } } 要求: (1)给出完整的程序,并写出运行结果(该题要求:运行结果用截图) ___________________________________________________________________________________ 【实验结果与分析】 完整程序与运行结果: package text2; class Human{ } class Pupil extends Human{ String stuNo; public void learn(){ 第8页共13页

String name; char sex; int age; double height; public void think(){ } Human(){} Human(String n,char s,int a,double h){ } name=n; sex=s; age=a; height=h; System.out.println(this.name+\在思考??\Java程序设计实验西南交大信息学院陈帆(2014) } class Student extends Pupil{ } public class TestStudent { public static void main(String args[]){ Student s1=new Student(\张三\男',18,170); System.out.println(s1.name+\。学号\,\,\岁,身高\s1.think(); s1.learn(); s1.study(); Student s2=new Student(\李四\女',17,150); System.out.println(s2.name+\。学号\,\,\岁,身高\s2.think(); s2.learn(); s2.study(); 第9页共13页

} System.out.println(this.name+\在学习??\Pupil(){} Pupil(String no,String n,char s,int a,double h){ } super(n,s,a,h); stuNo=no; public void study(){ } Student(){} Student(String no,String n,char s,int a,double h){ } super(no,n,s,a,h); System.out.println(this.name+\在自学??\Java程序设计实验西南交大信息学院陈帆(2014) } 实验结果: } ______________________________________________________________________________________________ 05、在一个类中编写4个两数相加的重载方法,参数分别为整整,整实、实整、实实。并在另一个类中编程测试这些方法的运行结果。 提示:运行结果参考如下。 图 运行界面 部分程序参考如下: class Operate{ static int add(int i, int j){ return (i+j); } static double add(int i, double d){ ... } ... } public class TestAdd{ public static void main(String [] args) { System.out.println(1+\System.out.println(2 +\... } } 第10页共13页

Java程序设计实验西南交大信息学院陈帆(2014) 要求: (1)给出完整的程序,并写出运行结果 ____________________________________________________________________________________ 【实验结果与分析】 完整程序: package text2; class Operate{ static int add(int i, int j){ return (i+j); } static double add(int i, double d){ double s; s=i+d; return s; } static double add(double i, int d){ double s; s=i+d; return s; } static double add(double i, double d){ double s; s=i+d; return s; } } public class TestAdd { public static void main(String [] args) { System.out.println(1+\ System.out.println(2 +\ System.out.println(2.5 +\ System.out.println(2.1 +\ } } 运行结果: 第11页共13页

Java程序设计实验西南交大信息学院陈帆(2014) _______________________________________________________________________________________

---------------------------------------------------实验作业上交说明

1、 按照上面题目要求,完成实验,程序必须上机验证,如果程序没有正确运行结果,将

记录“实验未完成”——将严重影响期末成绩。 2、

实验文档要规范并且要编辑排版,先用WORD文档编辑,然后转换出PDF文档,文件名

第12页共13页

必须按照下面格式命名:第*周实验 + 姓名+学号。

Java程序设计实验西南交大信息学院陈帆(2014)

3、

理) 4、 5、

上交实验文档方式:Email至:swjtujava@126.com

发送Email时,Email主题必须是:第*周实验 + 姓名+学号,否则不予处理 每周的实验文档,原则上周二上交(最迟在每周三晚8点前,过期按实验作业缺席处

第13页共13页

本文来源:https://www.bwwdw.com/article/ooy.html

Top