实验四 面向对象高级技术
- 格式:doc
- 大小:38.00 KB
- 文档页数:6
面向对象编程的高级技术与优化面向对象编程是计算机科学中的一种重要的编程范式,它的出现彻底改变了编程的方式和开发模式。
通过面向对象编程,我们可以构建出更加可复用、可扩展、可维护的软件系统。
这种编程范式已经成为了编程界的一种标准,而随着计算机科学的不断发展,它的高级技术和优化技巧也变得越来越重要。
下面我们就来探讨一下面向对象编程的高级技术与优化。
一、面向对象编程的高级技术1.重构重构是一种通过修改现有代码的方式来改进软件系统的过程。
通过重构,我们可以优化代码结构、提高代码可读性、减少代码冗余等。
重构是非常重要的一种技术,它能够帮我们不断地优化代码,让软件系统变得更加健壮和可维护。
2.设计模式设计模式是面向对象编程必不可少的一种知识,它是一种被广泛接受的解决软件设计问题的方式。
设计模式主要包括创建型模式、结构型模式和行为型模式。
通过学习设计模式,我们可以使我们的代码更具可读性、可维护性、可扩展性和可复用性。
3.反射反射是一种让程序运行时检查、访问和修改运行时类和对象的能力。
通过反射技术,我们可以在运行时动态地调用类的方法和属性,而不是在编译时就已经确定。
反射使我们能够更加灵活地操作对象和类,使我们的代码更加智能和高效。
4.注解注解是一种使我们的代码更加可读、可维护和可扩展的方式。
通过注解,我们可以将一些元数据信息添加到代码中,这些元数据信息可以被工具或者框架使用,从而让我们的代码更加智能和灵活。
mbda 表达式Lambda 表达式是一种简单、紧凑的方式来传递函数,它可以增强我们的代码简洁性和可读性。
通过 Lambda 表达式,我们可以让代码变得更加灵活和高效,并帮助我们更好地处理函数式编程中的问题。
二、面向对象编程的优化技巧1.延迟加载延迟加载是一种性能优化技巧,它可以避免在不必要的情况下加载数据,从而提高系统的性能。
通过延迟加载,我们可以避免一些昂贵的操作,比如数据库读取和网络连接等。
延迟加载使我们的系统更加快速和高效。
一、摘要本次面向对象技术实训以Java编程语言为基础,通过实例分析和实践操作,让学生深入了解面向对象编程的基本概念、原则和方法。
实训过程中,学生掌握了面向对象编程的基本语法、类和对象的设计与实现、继承与多态等核心概念,并通过实际项目开发提高了编程能力。
本文将从实训内容、方法与收获三个方面进行总结。
二、实训内容1. 面向对象基本概念(1)面向对象编程(OOP)的基本概念:封装、继承、多态。
(2)Java编程语言中的面向对象编程特性:类、对象、构造方法、访问控制符等。
2. 类和对象的设计与实现(1)设计一个简单的Java程序,实现学生信息管理系统。
(2)设计并实现学生类、教师类、课程类等实体类,以及相关的方法。
3. 继承与多态(1)使用继承实现学生类和教师类的继承关系。
(2)通过多态实现不同类对同一方法的重写和重载。
4. 实际项目开发(1)设计并实现一个图书管理系统,包括图书类、读者类、借阅类等。
(2)实现图书的借阅、归还、查询等功能。
三、实训方法1. 理论学习:通过阅读教材、参考书籍,了解面向对象编程的基本概念和原理。
2. 实践操作:根据实训内容,动手编写Java程序,实现面向对象编程。
3. 交流与讨论:在实训过程中,与其他同学进行交流与讨论,共同解决遇到的问题。
4. 查阅资料:针对遇到的具体问题,查阅相关资料,提高编程能力。
四、实训收获1. 理论知识:掌握了面向对象编程的基本概念、原则和方法,为后续课程和实际项目开发奠定了基础。
2. 编程能力:通过实际项目开发,提高了编程能力,学会了如何将理论知识应用到实际项目中。
3. 团队协作:在实训过程中,与其他同学进行交流与讨论,提高了团队协作能力。
4. 问题解决能力:在遇到问题时,能够主动查阅资料、请教他人,提高了问题解决能力。
五、总结本次面向对象技术实训使我受益匪浅,不仅加深了对面向对象编程的理解,还提高了编程能力。
在今后的学习和工作中,我会继续努力,将所学知识运用到实际项目中,为我国信息技术领域的发展贡献自己的力量。
实验报告班级:姓名:学号:课程名称Java程序设计实验项目Java的面向对象编程实验项目类型验证演示综合设计指导教师吴伟敏成绩√一、实验目的1、掌握Java程序面向对象编程的基本架构;2、掌握有关面向对象的基本概念,如:类、对象、接口继承和多态等;3、掌握包程序设计的方法,了解大型软件的构造方式二、实验步骤1、录入并测试以下程序,说出此程序的作用,体会类和对象的关系。
程序如下:class CCircle{double pi;double radius;double getRadius(){return radius;}void setCircle(double r, double p){pi=p;radius=r;}}public class Ex2_1{public static void main(String args[]) {CCircle cir1=new CCircle();cir1.setCircle(2.0,3.1416);System.out.println("radius="+cir1.getRadius());}}[基本要求]运行程序并观察运行结果。
[思考问题]试述程序中每条语句的作用。
2、录入并测试和完善以下程序,体会接口的用法。
interface Sittable{void sit();}interface Lie{void sleep();}interface HealthCare{void massage();}class Chair implements Sittable{public void sit(){System.out.println("It is sittable!");};}class Sofa extends Chair implements Lie,HealthCare{ public void sleep(){System.out.println("It is sleep!");};public void massage(){System.out.println("give a message!");};public static void main(String[] args) {Sofa cottonSofa=new Sofa();System.out.println(" Sofa is ok!");}}[基本要求]运行程序并观察运行结果。
学号姓名实验序号实验四实验名称类和对象编程—面向对象特征实验地点实验日期实验内容1.设计3个类,分别学生类Student,本科生类Undergaduate,研究生类Postgraduate,学生类包含一些基本属性,如姓名、所学课程、课程成绩等,具有一个空方法getGrade();本科生类Undergaduate与研究生类Postgraduate继承学生类Student,都覆盖了父类的getGrade()方法,用于通过分数计算成绩的等级,计算方法不同,研究生的标准要比本科生的标准高一些,如下表所示。
要求对属性进行适当封装,通过方法来访问。
表课程成绩等级本科生标准研究生标准80--100优秀90—100优秀70--80良好80—90良好60--70一般70—80一般50--60及格60—70及格50以下不及格60以下不及格编写测试类,在测试类里创建Undergaduate与Postgraduate对象,计算他们的成绩,并输出他们的个人信息。
实验过程及步骤根据实验要求编写程序如下:class Student {private String name;private String course;private int score;public String getName() {return name;}public void setName(String name) { = name;}public String getCourse() {return course;}public void setCourse(String course) {this.course = course;}public int getScore() {return score;}public void setScore(int score) { this.score = score;}public String getGrade() {return"";}}class Undergaduate extends Student { Undergaduate(String _name, String_course, int _score) {setName(_name);setCourse(_course);setScore(_score);实验过程及步骤}public String getGrade() {int grade = getScore();if (grade >= 80)return ("优秀");if (grade >= 70)return ("良好");if (grade >= 60)return ("一般");if (grade >= 50)return ("及格");return ("不及格");}}class Postgraduate extends Student { Postgraduate(String _name, String _course, int _score) {setName(_name);setCourse(_course);setScore(_score);}public String getGrade() {int grade = getScore();if (grade >= 90)return ("优秀");if (grade >= 80)return ("良好");if (grade >= 70)return ("一般");if (grade >= 60)return ("及格");return ("不及格");}}public class Test {public static void main(String[] args) {Undergaduate a1 = new Undergaduate("张三", "JAVA", 80);Undergaduate a2 = new实验过程及步骤Undergaduate("李四", "JAVA", 60);Postgraduate b1 = newPostgraduate("王五", "JAVA", 90);System.out.println(a1.getName() + "的" + a1.getCourse() + "成绩为"+ a1.getGrade());System.out.println(b1.getName() + "的" + a1.getCourse() + "成绩为"+ a1.getGrade());System.out.println(a2.getName() + "的" + a2.getCourse() + "成绩为"+ a2.getGrade());}}得到结果:实验结果及分析教师评阅。
面向对象的高级编程面向对象的高级编程是一种程序设计方法,它将现实世界中的事物抽象为对象,并通过对象之间的交互来实现程序的功能。
在面向对象的编程中,程序被组织为对象的集合,每个对象都有自己的属性和行为。
面向对象的编程具有很多优点,比如代码复用性高、可维护性强、扩展性好等。
面向对象的编程主要包括三个基本概念:封装、继承和多态。
封装是指将数据和行为打包在一个对象中,只向外界暴露必要的接口,隐藏内部实现细节。
这样可以提高代码的安全性和可维护性。
继承是指一个对象可以继承另一个对象的属性和行为,从而实现代码的复用。
多态是指同一个方法可以根据不同的对象调用而具有不同的行为,提高了代码的灵活性和可扩展性。
在面向对象的高级编程中,还有一些其他重要的概念,比如接口、抽象类、设计模式等。
接口定义了对象可以提供的服务,是一种约定,实现了接口的对象必须实现接口定义的方法。
抽象类是一种不能被实例化的类,只能被继承,用来定义一些通用的属性和方法。
设计模式是一些被反复使用、多次验证的代码设计经验,是解决特定问题的最佳实践。
面向对象的高级编程语言有很多,比如Java、C++、Python等。
每种语言都有自己的特点和优势,选择合适的编程语言可以提高开发效率和代码质量。
Java是一种广泛应用于企业开发的编程语言,具有丰富的类库和强大的生态系统,适合开发大型系统。
C++是一种性能优秀的编程语言,适合系统编程和游戏开发。
Python是一种简洁易读的编程语言,适合快速开发原型和数据分析。
面向对象的高级编程需要具备一定的编程能力和设计能力。
编程能力包括对语言特性和API 的熟悉程度,对常见算法和数据结构的掌握等。
设计能力包括对系统架构和设计模式的理解,对需求分析和系统设计的能力等。
只有具备了这些能力,才能设计出高质量的面向对象的程序。
总的来说,面向对象的高级编程是一种强大的程序设计方法,可以提高代码的复用性、可维护性和可扩展性。
通过合理地使用封装、继承、多态等概念,可以设计出结构清晰、易于理解和修改的程序。
实验4 面向对象的高级编程1. 实验目的理解继承的概念;掌握继承的使用;掌握接口的使用;掌握方法的重写;理解并实现委托,掌握事件的定义与触发。
2. 实验要求(1) 掌握C#中的继承的使用。
(2) 掌握C#中的接口的使用和方法重写。
(3) 掌握委托与事件的声明与使用。
3. 实验内容阅读下面的程序,分析程序,写出它的运行结果。
注意C#程序中多态的实现。
class A{public void F(){Console.WriteLine("A.F");}public virtual void G(){Console.WriteLine("A.G");}}class B : A{new public void F(){Console.WriteLine("B.F");}public override void G(){Console.WriteLine("B.G");}}class Test{static void Main(string[] args){B b = new B();A a = b;a.F();b.F();a.G();b.G();Console.WriteLine("按任意键继续......");Console.ReadKey();}}4. 编程实践(1) 哺乳动物和一般动物(控制台应用程序)现实生活中,哺乳动物是动物界中一个分支;可以动物普遍具有的特征都可以在哺乳动物身上找到;但哺乳动物也有自己独特的习性。
因此可以将动物看成是哺乳动物的父亲。
编程实现上可以通过哺乳动物类继承一般动物类,从而获得一般动物的特征。
用C#编写一个程序,使用Animal和Mammal两个类来说明一般动物和哺乳动物的继承关系。
请按下面的要求定义两个类:1)Animal类包括_name(动物名称)、_type(动物所属门类)两个成员以及用于接收信息(名称和门类)的方法AcceptDetails和显示信息的方法DisplayDetails。
前言《面向对象技术》是计算机技术、软件及网络专业的一门理论性较强的专业课,旨在培养大学生的计算机专业素质和运用典型模式进行程序设计的能力。
通过实验教学,使学生加深对所学知识的理解,掌握典型模式的实现技术。
它的目的和任务是:让学生了解模式在构件复杂系统过程中所处的角色,培养学生的针对特定应用问题使用适当的模式进行设计的能力。
本实验指导书是(美)Alan Shalloway&James R.Trott著,熊节译的《设计模式精解》的配套教材。
编者根据计算机课程的实践性强等特点,编写了本实验教程,帮助学生有计划地系统地上机实践。
根据教学内容和教学目标,实验指导书设计了八个实验,实验学时16学时,每个实验2学时。
学生应按照实验指导书的要求,完成指定的实验任务,并及时提交实验报告。
要求学生在每次实验之前做好预习,实验后按要求写出实验报告。
在每次实验过程中教师要考核学生每次实验的完成情况。
一、为保证实验效果学生应做到:1、遵守实验室的规章制度,爱护教学设备。
2、学生必须按时上机下机。
3、禁止做与实验无关的内容,禁止利用实验学时玩计算机游戏;4、每次实验前学生应做好预习,实验后按时提交实验报告。
二、实验报告的要求:1、明确实验的目的及要求;2、记录下运用相应模式的程序设计的思想、程序代码及运行的结果;3、说明实验中出现的问题和解决过程;4、写出实验的体会和实验过程中没解决的问题。
《面向对象技术》实验指导书是计算机科学与工程学院科学系李桂丽、李迎春老师集体编写而成,书中难免有错,敬请批评指正。
辽宁科技大学软件学院软件工程系2012年8月实验一面向对象程序设计一、实验目的:通过本次实验,使学生熟悉C++/JAVA语法,并运用面向对象基本技术实现程序设计,包括类的继承,对象之间的关系,提高面向对象程序设计的技能。
二、实验要求:1、运用C++/JAVA语言工具编写给定案例的程序。
2、提交实验报告,报告内容如下:实验题目、实验目的、实验内容、算法描述、程序结构、程序清单、调试情况、设计技巧、心得体会。
实验报告学班学姓级号名2016年1月11日批阅教师课程名称学号2014144141时间软件工程姓名秦川实验成绩实验日期实验名称实验4面向对象的分析与设计——用例图实验目的:1、熟悉UML用例图的功能和元素2、学会识别参与者和用例3、掌握用例图的绘制方法4、学会编写用例描述实验内容:任务一任务二分析图书管理系统的登录模块,且绘制用例图分析网上书店的业务需求,且绘制用例图实验原理:用例图主要在系统需求分析阶段和系统设计阶段使用。
在系统需求分析阶段,用例图用来获取系统的需求,理解系统应当如何工作;在系统设计阶段,用例图用来规定系统要实现的行为。
UML用例图的图标实验过程与结果:任务一:分析图书管理系统的登录模块,且绘制用例图1、分析用户登录模块的功能需求提供输入“用户名“和“密码“的文本框,验证用户身份的合法性。
2、识别参与者在用户登录模块中,根据工作内容和操作权限的不同,可细分为4类参与者:图书借阅员、图书管理员、系统管理员、图书借阅者。
图书借阅员必须先进行登录,然后才可以执行借出或归还图书的操作;图书管理员必须先进行登录,然后才可以执行编制书目、图书入库等操作;系统管理员必须先进行登录,然后才可以进行系统的维护操作;图书借阅者也必须先进行登录,然后才能查询图书借阅情况或查询图书馆藏书信息。
3、识别用例用户登录模块的主要功能是:输入“用户名“和“密码“,验证用户身份的合法性,故主要用例有两个:输入用户名和密码、验证用户身份。
4、绘制用例图操作步骤:1)运行MicrosoftOfficeVisio3)鼠标点击选择“UML用例”,展开UML用例图的图标4)用鼠标选拉图标进行绘图5、描述用例用例名称用例编号简要说明参与者当前状态使用频率前置条件后置条件基本操作流备选操作流验证用户所输入的“用户名“和“密码“是否有效图书管理员、系统管理员、图书借阅员、图书借阅者等待审查较高已输入有效的“用户名“和“密码“登录进入系统到“用户信息“数据表中检索是否存在相应的“用户名“和“密码“如果“用户名“和“密码“有误,显示提示信息。
实验四面向对象高级技术实验四一、有一个abstract类,类名为Employee,其子类有YearWorker、MonthWorker、WeekWorker。
YearWorker对象按年领取薪水,MonthWorker按月领取薪水、WeekWorker按周领取薪水。
Employee类有一个abstract方法:public abstract earnings ();子类必须重写父类的earnings()方法,给出各自领取报酬的具体方式。
有一个Company类,该类用Employee数组作为成员,Employee数组的单元可以是YearWorker 对象的上转型对象、MonthWorker对象的上转型对象或WeekWorker对象的上转型对象。
程序能输出Company对象一年需要支付的薪水总额。
程序模板按模板要求,将[代码]处替换为Java程序代码。
HardWork.javaabstract class Employee {public abstract double earnings();}class YearWorker extends Employee {[代码1] //重写earnings()方法}class MonthWorker extends Employee {[代码2] //重写earnings()方法}class WeekWorker extends Employee {[代码3] //重写earnings()方法}class Company {Employee[] employee;double salaries=0;Company(Employee[] employee) {this.employee=employee;}public double salariesPay() {salaries=0;[代码4] //计算salariesreturn salaries;}}public class HardWork {public static void main(String[] args) {Employee[] employee=new Employee[20];for(int i=0;i<="">if(i%3==0)employee[i]=new WeekWorker();else if(i%3==1)employee[i]=new MonthWorker();else if(i%3==2)employee[i]=new YearWorker();}Company company=new Company(employee);System.out.println("公司年工资总额:"+company.salariesPay());}}二、运行下面的程序,理解成员变量的继承与隐藏。
学号Java语言程序设计C实验报告实验1 Java语言基础学生姓名专业、班级指导教师成绩计算机与信息工程学院年月日一、实验目的学习课程相关章节知识,通过上机练习,掌握以下知识:1.类的继承2.子类中构造方法的使用3.Super,this关键字的使用方法二、实验内容编写三个系别的学生类:英语系,计算机系,文学系(要求通过继承学生类)各系有以下成绩:(知识点:面向对象综合应用、数组中元素为引用类型)英语系:演讲,期末考试,期中考试;计算机系:操作能力,英语写作,期中考试,期末考试;文学系:演讲,作品,期末考试,期中考试;各系总分评测标准:英语系:演讲50%期末考试25%期中考试25%计算机系:操作能力40%英语写作20%期末考试20%期中考试20%文学系:演讲35%作品35%期末考试15%期中考试15%定义一个可容纳5个学生的学生类数组,使用随机数给该数组装入各系学生的对象,然后按如下格式输出数组中的信息:学号:XXXXXXXX 姓名:XXX 性别:X 年龄:XX 综合成绩:XXpackage aaa;public class Student {//学号:XXXXXXXX 姓名:XXX性别:X 年龄:XX 综合成绩:XX private int lim;private String name;private String sex;private int age;private double m_grade;private double f_grade;public int getLim() {return lim;}public void setLim(int lim) {this.lim = lim;}public String getName() {return name;}public void setName(String name) { = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public double getM_grade() {return m_grade;}public void setM_grade(double m_grade) {this.m_grade = m_grade;}public double getF_grade() {return f_grade;public void setF_grade(double f_grade) {this.f_grade = f_grade;}public Student(int lim, String name, String sex, int age, double m_grade, double f_grade) {super();this.lim = lim; = name;this.sex = sex;this.age = age;this.m_grade = m_grade;this.f_grade = f_grade;}public void Sayhi(){System.out.println(" ");}}package aaa;public class Computer extends Student {private int caozuo;private int write;public Computer(int lim, String name, String sex, int age, double m_grade, double f_grade, int caozuo, int write) {super(lim, name, sex, age, m_grade, f_grade);this.caozuo = caozuo;this.write = write;}public void Sayhi(){System.out.println("学号:"+super.getLim()+"姓名:"+super.getName()+"性别:"+super.getSex()+"年龄:"+super.getAge()+"综合成绩:"+grade());}public double grade(){returncaozuo*0.4+write*0.2+super.getM_grade()*0.2+super.getF_grade()*0.2;}package aaa;public class English extends Student {private int speed;public English(int lim, String name, String sex, int age, double m_grade, double f_grade, int speed) {super(lim, name, sex, age, m_grade, f_grade);this.speed = speed;}public void Sayhi(){System.out.println("学号:"+super.getLim()+"姓名:"+super.getName()+"性别:"+super.getSex()+"年龄:"+super.getAge()+"综合成绩:"+grade());}public double grade(){return speed*0.5+super.getM_grade()*0.25+super.getF_grade()*0.25;}}package aaa;public class Literature extends Student {private int speed;private int works;public Literature(int lim, String name, String sex, int age,double m_grade, double f_grade, int speed, int works) { super(lim, name, sex, age, m_grade, f_grade);this.speed = speed;this.works = works;}public void Sayhi(){System.out.println("学号:"+super.getLim()+"姓名:"+super.getName()+"性别:"+super.getSex()+"年龄:"+super.getAge()+"综合成绩:"+grade());}public double grade(){returnspeed*0.35+works*0.35+super.getM_grade()*0.15+super.getF_grade()*0.15;}}package aaa;import java.util.Scanner;public class Test {public static void main(String[] args) {// TODO自动生成的方法存根Student []s=new Student[5];Scanner input=new Scanner(System.in);int lim;String name;String sex;int age;double m_grade;double f_grade;int caozuo;int write;int speed;int works;for(int i=0;i<5;i++){int j=(int)(Math.random()*3);switch (j){case 0:{System.out.println("lim,name,sex,age,m_grade,f_grade,caozuo,write");lim=input.nextInt();name=input.next();sex=input.next();age=input.nextInt();m_grade=input.nextDouble();f_grade=input.nextDouble();caozuo=input.nextInt();write=input.nextInt();s[i]=new Computer(lim,name,sex,age,m_grade,f_grade,caozuo,write);}break;case 1:{System.out.println("lim, name, sex, age,m_grade,f_grade,speed");lim=input.nextInt();name=input.next();sex=input.next();age=input.nextInt();m_grade=input.nextDouble();f_grade=input.nextDouble();speed=input.nextInt();s[i]=new English(lim, name, sex, age, m_grade,f_grade,speed);}break;case 2:{System.out.println("lim, name, sex, age,m_grade, f_grade, speed, works");lim=input.nextInt();name=input.next();sex=input.next();age=input.nextInt();m_grade=input.nextDouble();f_grade=input.nextDouble();speed=input.nextInt();works=input.nextInt();s[i]=new Literature(lim, name, sex, age,m_grade, f_grade, speed, works);}break;}}for(int i=0;i<5;i++){s[i].Sayhi();}}}三、实验思想四、实验结果五、实验心得学会了类的继承,子类中构造方法的使用,Super,this关键字的使用方法。
实验四一、有一个abstract类,类名为Employee,其子类有YearWorker、MonthWorker、WeekWorker。
YearWorker对象按年领取薪水,MonthWorker按月领取薪水、WeekWorker按周领取薪水。
Employee类有一个abstract方法:public abstract earnings();子类必须重写父类的earnings()方法,给出各自领取报酬的具体方式。
有一个Company类,该类用Employee数组作为成员,Employee数组的单元可以是YearWorker 对象的上转型对象、MonthWorker对象的上转型对象或WeekWorker对象的上转型对象。
程序能输出Company对象一年需要支付的薪水总额。
程序模板按模板要求,将[代码]处替换为Java程序代码。
HardWork.javaabstract class Employee {public abstract double earnings();}class YearWorker extends Employee {[代码1] //重写earnings()方法}class MonthWorker extends Employee {[代码2] //重写earnings()方法}class WeekWorker extends Employee {[代码3] //重写earnings()方法}class Company {Employee[] employee;double salaries=0;Company(Employee[] employee) {this.employee=employee;}public double salariesPay() {salaries=0;[代码4] //计算salariesreturn salaries;}}public class HardWork {public static void main(String[] args) {Employee[] employee=new Employee[20];for(int i=0;i<employee.length;i++) {if(i%3==0)employee[i]=new WeekWorker();else if(i%3==1)employee[i]=new MonthWorker();else if(i%3==2)employee[i]=new YearWorker();}Company company=new Company(employee);System.out.println("公司年工资总额:"+company.salariesPay());}}二、运行下面的程序,理解成员变量的继承与隐藏。
import java.io.*;class sum_3{int sum,num1,num2;static int num3;//定义构造函数初始化对象sum_3(){num1=0;num2=0;num3=0;sum=0;}}class sub_sum3 extends sum_3{int sum,num1,num2; //隐藏父类sum_3中的实例变量static int num3; //隐藏父类sum_3中的类变量void sum(int i,int j,int k){num1=i;num2=j;num3=k;sum=num1+num2+num3;}}public class computing{public static void main (String arg[]){sub_sum3 m1=new sub_sum3();m1.sum(100,200,300);System.out.println("sum="+m1.num1+"+"+m1.num2+"+"+m1.num3+"="+m1.sum);}}三、运行下面的程序,理解方法的继承。
class Sort3{double max1,max2,max3;Sort3(){max1=-1;max2=-1;max3=-1;}void sort(){double s;if (max1<max2){s=max1;max1=max2;max2=s;}if (max1<max3){s=max1;max1=max3;max3=s;}if (max2<max3){s=max2;max2=max3;max3=s;}}}class sub_Sort3 extends Sort3{void subsort(double i,double j,double k){max1=i;max2=j;max3=k;sort(); //调用父类中的方法sort()}}public class Class1{public static void main (String args[]){sub_Sort3 m1 = new sub_Sort3();m1.subsort(100,200,300);System.out.println("三个数从大到小为:"+m1.max1+","+m1.max2+","+m1.max3);}}四、运行下面的程序,理解方法的重载。
class Sort2or3{double max1,max2,max3;Sort2or3(){max1=-1;max2=-1;max3=-1;}void sort(double i,double j){double s;max1=i;max2=j;if(max1<max2){s=max1;max1=max2;max2=s;}}void sort(double i,double j,double k){double s;max1=i;max2=j;max3=k;if (max1<max2){s=max1;max1=max2;max2=s;}if (max1<max3){s=max1;max1=max3;max3=s;}if (max2<max3){s=max2;max2=max3;max3=s;}}}public class Class1{public static void main (String args[]){Sort2or3 m1 = new Sort2or3();m1.sort(100,200);System.out.println("两个数从大到小为:"+m1.max1+","+m1.max2);m1.sort(50,150,100);System.out.println("三个数从大到小为:"+m1.max1+","+m1.max2+","+m1.max3);}}五、运行下面的程序,理解方法的覆盖。
class sort_Demo{int i,j,k,swap;sort_Demo(){i=j=k=swap=0;}void sort(int t1,int t2[]){ //父类中的方法用来实现升序//用选择法按升序排列for(i=0;i<t1-1;i++){k=i;for(j=i+1;j<t1;j++)if(t2[j]<t2[k]) k=j;if (k!=i){swap=t2[i];t2[i]=t2[k];t2[k]=swap;}}}}class sub_sort_Demo extends sort_Demo{void sort(int t1,int t2[]){ //子类中的方法实现降序//用选择法实现降序排列for(i=0;i<t1-1;i++){k=i;for(j=i+1;j<t1;j++)if(t2[j]>t2[k]) k=j;if (k!=i){swap=t2[i];t2[i]=t2[k];t2[k]=swap; } }}}public class Class1{public static void main (String args[]){int a[]={34,12,8,67,88,23,98,101,119,56};sort_Demo m1=new sort_Demo();sub_sort_Demo m2=new sub_sort_Demo();System.out.println("排序前的数据为:");for (int i=0;i<10;i++)System.out.print(" "+a[i]);//调用父类中的sotr()方法m1.sort(a.length ,a);System.out.println("\n按升序排列的数据为:");for (int i=0;i<10;i++)System.out.print(" "+a[i]);//调用子类中的sort()方法,该方法实现了对父类中方法的覆盖m2.sort(a.length ,a);System.out.println("\n按降序排列的数据为:");for (int i=0;i<10;i++)System.out.print(" "+a[i]); } }六、编程1、编写Manager类,该类继承于本章中的Employee类(参照后面附注)(1)为其添加:两个属性:办公室officeID和年终分红bonus;1构造器方法:带有4个参数的构造器方法,用于对除bonus属性外的所有其它属性进行初始化;方法:officeID属性和bonus属性的相关set和get方法;(2)重写Employee类中的方法raiseSalary(double proportion),经理涨工资的计算方法为在雇员工资涨幅的基础上增加10%的比例。
2、编写TemporaryEmployee(临时工)类,该类继承于Employee类(1)为其添加:1个属性:雇佣年限hireYears;构造器方法:用于初始化该类的所有属性;方法:hireYears属性的set和get方法;(2)重写Employee类中的方法raiseSalary(double proportion),临时工的工资涨幅为正式雇员的50%。
3、编写题1和题2的测试程序(1)创建一个长度为3的Employee类型的对象数组,数组元素分别为Employee对象、Manager对象和TemporaryEmployee对象;(2)为所有雇员涨一次工资,涨幅为10%;(3)输出所有雇员的信息;七、编程1、编写一个Animal类,包含:属性:private String type; //动物的类型构造器://用于初始化私有属性type方法:public String toString( ) //返回动物类型的信息public void sound( ) //输出动物的叫声信息2、编写一个Flyable接口,包含:方法:double flySpeed(); //用于返回最大的飞行速度3、编写Glede(老鹰)类和Pigeon(鸽子)类,分别继承题4中的Animal类并实现题5中的Flyable接口;4、编写测试类,打印输出老鹰和鸽子的叫声信息和最大飞行速度。