实验三 类与对象(1)——耿祥义

合集下载

耿祥义java视频课程设计

耿祥义java视频课程设计

耿祥义java视频课程设计一、教学目标本课程的学习目标包括以下三个方面:1.知识目标:学生需要掌握Java编程语言的基本语法、数据结构、控制流程、面向对象编程等基础知识。

2.技能目标:学生能够运用Java语言编写简单的应用程序,具备一定的编程能力和问题解决能力。

3.情感态度价值观目标:学生通过对Java编程的学习,培养对计算机科学的兴趣和热情,增强自主学习意识和团队合作精神。

在教学过程中,我们将根据课程性质、学生特点和教学要求,明确课程目标,并将目标分解为具体的学习成果,以便后续的教学设计和评估。

二、教学内容根据课程目标,本课程的教学内容主要包括以下几个部分:1.Java基本语法:数据类型、运算符、表达式等。

2.控制流程:条件语句、循环语句等。

3.数据结构:数组、链表、栈、队列等。

4.面向对象编程:类、对象、继承、多态、封装等。

5.常用类库:String类、数学计算类、日期时间类等。

6.输入输出流:文件读写、网络编程等。

7.综合实例:编写简单的Java应用程序,如计算器、通讯录等。

教学内容将按照教材的章节安排和进度进行,确保内容的科学性和系统性。

三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法:1.讲授法:教师讲解Java编程的基本概念和知识点,引导学生理解和掌握。

2.案例分析法:通过分析实际案例,让学生了解Java编程在实际应用中的作用和价值。

3.实验法:学生动手编写代码,进行实验操作,培养实际编程能力和问题解决能力。

4.讨论法:学生分组讨论,合作完成项目,提高团队合作意识和沟通能力。

教学方法应多样化,以适应不同学生的学习需求和特点。

四、教学资源为了支持教学内容和教学方法的实施,我们将选择和准备以下教学资源:1.教材:《Java编程思想》、《Head First Java》等。

2.参考书:《Java核心技术》、《Java并发编程》等。

3.多媒体资料:教学PPT、视频教程、在线课程等。

Java 2实用教程(第三版)实验指导与习题解答

Java 2实用教程(第三版)实验指导与习题解答

Java 2实用教程(第三版)实验指导与习题解答清华大学出版社(编著耿祥义张跃平)实验模版代码及答案建议使用文档结构图(选择Word菜单→视图→文档结构图)上机实践1 初识JA V A (4)实验1一个简单的应用程序 (4)实验2一个简单的J A V A A PPLET程序 (4)实验3联合编译 (5)上机实践2 基本数据类型与控制语句 (6)实验1输出希腊字母表 (6)实验2回文数 (7)实验3猜数字游戏 (9)上机实践3 类与对象 (10)实验1三角形、梯形和圆形的类封装 (10)实验2实例成员与类成员 (13)实验3使用PACKAGE语句与IMPORT语句 (15)上机实践4 继承与接口 (17)实验1继承 (17)实验2上转型对象 (20)实验3接口回调 (22)上机实践5 字符串、时间与数字 (24)实验1S TRING类的常用方法 (24)实验2比较日期的大小 (25)实验3处理大整数 (26)上机实践6 组件及事件处理 (27)实验1算术测试 (27)实验2信号灯 (30)实验3布局与日历 (32)上机实践7 组件及事件处理2 (36)实验1方程求根 (36)实验2字体对话框 (39)实验3英语单词拼写训练 (42)上机实践8 多线程 (46)实验1汉字打字练习 (46)实验2旋转的行星 (48)实验3双线程接力 (52)上机实践9 输入输出流 (55)实验1学读汉字 (55)实验2统计英文单词字 (58)实验2读取Z IP文件 (62)上机实践10 JAV A 中的网络编程 (63)实验1读取服务器端文件 (63)实验2使用套接字读取服务器端对象 (65)实验3基于UDP的图像传输 (68)上机实践11 数据结构 (72)实验1扫雷小游戏 (72)实验2排序与查找 (77)实验3使用T REE S ET排序 (78)上机实践12 JAV A SWING (80)实验1JL AYERED P ANE分层窗格 (80)实验2使用表格显示日历 (81)实验3多文档界面(MDI) (84)上机实践1 初识Java实验1 一个简单的应用程序1.答案:【代码1】:System.out.println("你好,很高兴学习Java") ;【代码2】:System.out.println("We are students") ;2.模板代码Hello.javapublic class Hello{public static void main (String args[ ]){【代码1】//命令行窗口输出"你好,很高兴学习Java"A a=new A();a.fA();}}class A{void fA(){【代码2】//命令行窗口输出"We are students"}}实验2 一个简单的Java Applet程序1.答案:【代码1】:g.drawString("这是一个Java Applet 程序",10,30);【代码2】:g.drawString("我改变了字体",20,50);2.模板代码FirstApplet.javaimport java.applet.*;import java.awt.*;public class FirstApplet extends Applet{public void paint(Graphics g){g.setColor(Color.blue);【代码1】//在Java Applet中绘制一行文字:“这是一个Java Applet 程序”g.setColor(Color.red);g.setFont(new Font("宋体",Font.BOLD,36));【代码2】//在Java Applet中绘制一行文字:“我改变了字体”}}实验3 联合编译1.答案:【代码1】:System.out.println("你好,只需编译我");【代码2】:System.out.println("I am A");【代码3】:System.out.println("I am B");【代码4】:System.out.println("I am C");2.模板代码模板1:Hello.javapublic class MainClass{public static void main (String args[ ]){【代码1】 //命令行窗口输出"你好,只需编译我"A a=new A();a.fA();B b=new B();b.fB();}}模板2 :A.javapublic class A{void fA(){【代码2】 //命令行窗口输出"I am A"}}模板3 :B.javapublic class B{void fB(){【代码3】 //命令行窗口输出"I am B"}}模板4 :C.javapublic class C{void fC(){【代码4】 //命令行窗口输出"I am C"}}上机实践2 基本数据类型与控制语句实验1 输出希腊字母表1.答案:【代码1】:startPosition=(int)cStart;【代码2】:endPosition=(int)cEnd ;【代码3】:c=(char)i;2.模板代码GreekAlphabet.javapublic class GreekAlphabet{public static void main (String args[ ]){int startPosition=0,endPosition=0;char cStart='α',cEnd='ω';【代码1】//cStart做int型转换据运算,并将结果赋值给startPosition【代码2】//cEnd做int型转换运算,并将结果赋值给endPositionSystem.out.println("希腊字母\'α\'在unicode表中的顺序位置:"+(int)c);System.out.println("希腊字母表:");for(int i=startPosition;i<=endPosition;i++){char c='\0';【代码3】//i做char型转换运算,并将结果赋值给cSystem.out.print(" "+c);if((i-startPosition+1)%10==0)System.out.println("");}}}实验2 回文数1.答案:【代码1】:number<=99999&&number>=1【代码2】:d5=number/10000;【代码3】:d4=number%10000/1000;【代码4】:d3=number%1000/100;【代码5】:d5!=0【代码6】:d1==d5&&d2==d4【代码7】:d4!=0【代码8】:d1==d4&&d2==d3【代码9】:d3!=0【代码10】:d1==d32.模板代码Number.javaimport javax.swing.JOptionPane;public class Number{public static void main(String args[]){int number=0,d5,d4,d3,d2,d1;String str=JOptionPane.showInputDialog("输入一个1至99999之间的数");number=Integer.parseInt(str);if(【代码1】) //判断number在1至99999之间的条件{【代码2】//计算number的最高位(万位)d5【代码3】//计算number的千位d4【代码4】//计算number的百位d3d2=number%100/10;d1=number%10;if(【代码5】) //判断number是5位数的条件{System.out.println(number+"是5位数");if(【代码6】) //判断number是回文数的条件{System.out.println(number+"是回文数");}else{System.out.println(number+"不是回文数");}}else if(【代码7】) //判断number是4位数的条件{System.out.println(number+"是4位数");if(【代码8】) //判断number是回文数的条件码{System.out.println(number+"是回文数");}else{System.out.println(number+"不是回文数");}}else if(【代码9】) //判断number是3位数的条件{System.out.println(number+"是3位数");if(【代码10】) //判断number是回文数的条件{System.out.println(number+"是回文数");}else{System.out.println(number+"不是回文数");}}else if(d2!=0){System.out.println(number+"是2位数");if(d1==d2){System.out.println(number+"是回文数");}else{System.out.println(number+"不是回文数");}}else if(d1!=0){System.out.println(number+"是1位数");System.out.println(number+"是回文数");}}else{System.out.printf("\n%d不在1至99999之间",number);}}}实验3 猜数字游戏1.答案:【代码1】:yourGuess!=realNumber【代码2】:yourGuess>realNumber【代码3】:yourGuess<realNumber2.模板代码GuessNumber.javaimport javax.swing.JOptionPane;public class GuessNumber{public static void main (String args[ ]){System.out.println("给你一个1至100之间的整数,请猜测这个数");int realNumber=(int)(Math.random()*100)+1;int yourGuess=0;String str=JOptionPane.showInputDialog("输入您的猜测:");yourGuess=Integer.parseInt(str);while(【代码1】) //循环条件{if(【代码2】) //条件代码{str=JOptionPane.showInputDialog("猜大了,再输入你的猜测:");yourGuess=Integer.parseInt(str);}else if(【代码3】) //条件代码{str=JOptionPane.showInputDialog("猜小了,再输入你的猜测:");yourGuess=Integer.parseInt(str);}}System.out.println("猜对了!");}}上机实践3 类与对象实验1 三角形、梯形和圆形的类封装1.答案:【代码1】:sideA=a;sideB=b;sideC=c;【代码2】:a+b>c&&a+c>b&&c+b>a【代码3】:boo=true;【代码4】:boo=false;【代码5】:if(boo){length=sideA+sideB+sideC;return length;}else{System.out.println("不是一个三角形,不能计算周长");return 0;}【代码6】:sideA=a;sideB=b;sideC=c;【代码7】:a+b>c&&a+c>b&&c+b>a【代码8】:boo=true;【代码9】:boo=false;【代码10】:above=a;bottom=b;height=h;【代码11】:area=(above+bottom)/2*height;return area;【代码12】:radius=r;【代码13】:return 3.14*radius*radius;【代码14】:return 3.14*2*radius;【代码15】:circle=new Circle(10);【代码16】:trangle=new Trangle(3,4,5);【代码17】:lader=new Lader(3,4,10);【代码18】:length=circle.getLength();【代码19】:area=circle.getArea();【代码20】:length=trangle.getLength();【代码21】:area=trangle.getArea();【代码22】:area=lader.getArea();【代码23】:trangle.setABC(12,34,1);【代码24】:area=trangle.getArea();【代码25】:length=trangle.getLength();2.模板代码AreaAndLength.javaclass Trangle{double sideA,sideB,sideC,area,length;boolean boo;public Trangle(double a,double b,double c){【代码1】//参数a,b,c分别赋值给sideA,sideB,sideCif(【代码2】) //a,b,c构成三角形的条件表达式{【代码3】//给boo赋值。

最新 实验项目类型的分类和认定标准

最新 实验项目类型的分类和认定标准

实验项目类型的分类和认定标准一、实验项目类型的分类本科实验教学项目类型统一分为三个类型:第一类:“演示型”实验和“验证型”实验。

第二类:“综合型”实验和“设计型”实验。

第三类:“研究创新型”实验。

二、各类型实验项目的认定标准第一类演示型实验和验证型实验这一类实验是指以验证、演示和基本操作为目的,其实验内容和方法相对单一,学生根据实验指导书的要求,在教师指导下,按照既定方法、既定的仪器条件完成全部实验过程,以巩固课堂理论教学,培养学生基本实验能力。

第二类综合型实验1.综合型实验的目的在于通过实验内容、方法、手段的综合,培养学生综合运用所学知识点解决相关问题,培养学生的综合实验能力,体现对学生能力、素质的综合培养。

2.综合型实验可体现在实验内容、实验方法或实验手段几方面的综合:(1)实验内容的综合,指的是实验内容涉及一门课程的多个知识点、系列课程的多个知识点、相关课程或多门课程的内容,也可为整合多项实验单元的内容,使学生建立知识的关联性和系统性。

(2)实验方法的综合,指的是综合运用两种及以上的基本实验方法完成同一个实验,使学生掌握运用多元思维方法、多种实验方法和多种实验原理综合分析问题、解决问题的能力,体现实验方法的多样性,培养学生综合分析问题的素养。

(3)实验手段的综合,指的是综合运用两种及以上的实验手段完成同一个实验,培养学生从不同的角度,通过不同的手段分析问题、解决问题,掌握多种实验技能。

3.综合型实验应融入本专业的多个知识点或多种实验方法、手段,吸收相关专业的理论和技能。

综合型实验目的明确,实验内容和实验过程由教师指定。

学生完成实验后需运用相关知识解释所进行的实验现象和规律,并写出实验报告。

设计型实验1.设计型实验的目的在于通过学生对实验的自主设计,体现学生的学习主动性、对实验内容的探索性,培养学生综合应用知识解决实践问题的能力。

2.设计型实验指的是学生在教师的指导下,根据设定的实验目的和给定的实验条件,自己设计实验方案、选择实验方法、选用实验器材、拟定实验程序,自己加以实验并对实验结果进行分析处理。

实验3类和对象【优质】

实验3类和对象【优质】

实验三类和对象一、实验目的:熟悉类和对象的定义及使用;熟悉static关键字、thi s关键字,访问权限等。

二、实验内容:1.编写一个Java应用程序,该程序有2个类:V ehicle(机动车)和User(主类)。

V ehicle类的成员变量有:speed(速度)、power(功率)。

成员方法有:speedUp(int s)—加速,speedDown(int d)—减速,setPower(int p)—设置功率,getPower()—获取功率请按下面给出的程序模版,填写缺少的代码,完成程序。

V ehicle.javapublic class V ehicle{代码1 //声明double型变量speed代码2 //声明int型变量powervoid speedUp(int s){代码3 //将s的值累加到speed}void speedDown(int d){代码4 //从speed中减去d}void setPower(int p){代码5 //将p赋给power}void getPower(){代码6 //返回power的值}double getSpeed(){return speed;}}User.javapublic class User {public static void main(String args[]){V ehicle car1,car2;代码7 //创建对象car1代码8 //创建对象car2car1.setPower(128);car2.setPower(76);System.out.println(“car1的功率是:”+car1.getPower());System.out.println(“car2的功率是:”+car2.getPower());代码9 //car1调用speedUp方法,速度增加80代码10 //car2调用speedUp方法,速度增加80System.out.println(“car1目前的速度:”+car1.getSpeed());System.out.println(“car2目前的速度:”+car2.getSpeed());car1.speedDown(10);car2.speedDown(20);System.out.println(“car1目前的速度:”+car1.getSpeed());System.out.println(“car2目前的速度:”+car2.getSpeed());}}功能扩展:在类中定义构造方法,构造具有不同初始值的对象。

软件工程项目大作业

软件工程项目大作业

学号:软件工程大作业项目名称学生学籍信息管理系统姓名团队成员专业班级指导教师计算机学院2016 年 5 月31 日目录一、项目开发计划 (6)1引言 (6)1。

1编写目的 (6)1。

2 背景 (6)1.3定义 (6)1。

4参考资料 (6)2项目概述 (7)2.1工作内容 (7)2.2主要参加人员 (7)2.3产品 (7)2.3。

1程序 (7)2.3.2文件 (7)2.3。

3服务 (7)2.3。

4非移交的产品 (8)2。

4验收标准 (8)2.5完成项目的最迟期限 (8)2。

6本计划的批准者和批准日期 (8)3实施计划 (8)3。

1工作任务的分解与人员分工 (8)3。

2接口人员 (8)3。

3进度 (9)3.4预算 (9)3.5关键问题 (9)4支持条件 (9)4。

1计算机系统支持 (10)4。

2需由用户承担的工作 (10)4。

3由外单位提供的条件 (10)5专题计划要点 (10)二、可行性研究 (11)1引言 (11)1。

1编写目的 (11)1.2背景 (11)1。

3定义 (11)1.4参考资料 (11)2可行性研究的前提 (12)3对现有系统的分析 (13)4所建议的系统 (15)4。

1 影响 (15)4。

1。

1对设备的影响 (15)4。

1。

2对软件的影响 (15)4。

1.3对用户单位机构的影响 (16)4。

1。

4对开发的影响 (16)4.1.5对经费开支的影响 (16)5技术条件方面的可行性 (16)6经济可行性分析 (16)6。

1投资成本 (16)6。

2收益 (17)6。

3成本/收益分析: (18)7社会因素可行性分析 (18)7.1法律方面的可行性 (18)7.2用户使用可行性 (18)8结论 (18)三、需求分析 (19)1引言 (19)1.1编写目的 (19)1.2背景 (19)1.3参考资料 (19)2任务概述 (19)2。

1目标 (19)2.2用户的特点 (20)3需求规定 (20)3。

java面向对象程序设计第2版第4章_类与对象

java面向对象程序设计第2版第4章_类与对象
整理课件
§4.1 编程语言的几个发展阶段
◆ 面向机器语言 ◆面向过程语言 ◆面向对象语言
面向对象编程主要体现下列三个特性 ◇封装性 ◇继承 ◇多态
整理课件
§4.2 类
类是组成Java程序的基本要素。类封装了 一类对象的状态和方法。类是用来定义对象的 模板。
类的实现包括两部分:类声明和类体。基 本格式为:
整理课件
§4.4 参数传值
§4.4.1 基本数据类型参数的传值
对于基本数据类型的参数,向该参数传递 的值的级别不可以高于该参数的级别 。
例4-4
整理课件
§4.4.2 引用类型参数的传值
当参数是引用类型时,“传值”传递的是变 量中存放的“引用”,而不是变量所引用的实体。
例4-5
整理课件
§4.4.3 可变参数
我们在任何一个类中用类Tom 创建了一个对象 后 , 该 对 象 能 访 问 自 己 的 public 变 量 和 类 中 的 public方法(也可以通过类名来操作成员变量、 方法) 。
整理课件
§4.10.3 友好变量和友好方法
当在另外一个类中用类Tom 创建了一个对象 后,如果这个类与Tom类在同一个包中,那么该 对象能访问自己的友好变量和友好方法。
1.通过使用运算符“.” 对象操作自己的变量 (对象的属性) 2.使用运算符“.”,对象调用类中的方法(对 象的功能)
例4-3
整理课件
§4.3.3 对象的引用和实体
当用类创建一个对象时,类中 的成员变量在分配内存空间,这 些内存空间称作该对象的实体或 对象的变量,而对象中存放着引 用。
一个类创建的两个对象,如果 具有相同的引用,那么就具有完 全相同的实体。
2.类名最好容易识别、见名知意。当类名由几个“单词”复 合而成时,每个单词的首字母使用大写。

Java基础教程(第3版)_第4章_类与对象

Java基础教程(第3版)_第4章_类与对象

如果有一个类是 public 类 , 那 么源文件的名字必须与这个类的 名字完全相同,扩展名是.java。编 译源文件将生成多个扩展名 为.class的字节码文件,每个字节 码文件的名字与源文件中对应的 类的名字相同,这些字节码文件 被存放在与源文件相同的目录中 。
2018/11/2
第 14 页
例子3 例子3中有两个Java源文件Example4_3.java和Rectangle.java,其 中Rectangle.java含有Rectangle类、Example4_3.java含有Circle类和 主类。程序运行效果如图4.5。
构造方法和对象的创建密切相关 。
2018/11/2
第 16 页
4.3.1 构造方法
构造方法是一种特殊方法,它的名字必须与它所在的类的名 字完全相同,而且没有类型。 允许一个类中编写若干个构造方法,但必须保证他们的参数 不同,即参数的个数不同,或者是参数的类型不同。
需要注意的是 ( 1) 如果类中没有编写构造方法, 系统会默认该类只有一个构造方法, 该默认的构造方法是无参数的,且方 法体中没有语句。 ( 2 )如果类里定义了一个或多个构 造方法,那么 Java 不提供默认的构造 方法 。
4.1.1
例子1 一个能输出圆的面积的 Java应用程序。
public class ComputerCircleArea { public static void main(String args[]) { double radius; //半径 double area; //面积 radius=163.16; area=3.14*radius *radius; //计算面积 System.out.printf("半径是%5.3f的园的面积:\n%5.3f\n",radius,area); } } 事实上, 如果其他Java应用程序也想计算圆的面积,同样需要知道计算 圆面积的算法,即也需要编写和这里同样多的代码。 现在提出如下问题: 能否将和圆有关的数据以及计算圆面积的代码进行封装,使得需要计 算圆面积的Java应用程序的主类无需编写计算面积的代码就可以计算出圆的 面积呢?

Java面向对象程序设计_习题解答(耿祥义)

Java面向对象程序设计_习题解答(耿祥义)

书后习题参考答案习题1 2习题2 3习题3 4习题4 10习题5 11习题6 14习题7 15习题9 16习题12 20习题13 25习题14 27习题15 28习题16 31习题17 39习题11.James Gosling2.(1)使用一个文本编辑器编写源文件。

(2)使用Java编译器(javac.exe)编译Java源程序,得到字节码文件。

命令:javac –d . 文件名称.java(3)使用Java解释器(java.exe)运行Java程序。

命令:java 包名.类名3.Java的源文件是由若干个书写形式互相独立的类、接口、枚举等组成。

应用程序中可以没有public类,若有的话至多可以有一个public类。

4.新建JAVA_HOME系统环境变量,指向安装目录在系统环境变量path中增加内容:%JAVA_HOME%\bin;新建系统环境变量classpath并填入三项:.; %JAVA_HOME%\lib\dt.jar; %JAVA_HOME%\lib\tools.jar5. B6. Java源文件的扩展名是.java。

Java字节码的扩展名是.class。

7. D8.(1)Speak.java(2)生成两个字节码文件,这些字节码文件的名字Speak.class和Xiti8.class(3)java Xiti8(4)执行java Speak的错误提示Exception in thread "main" ng.NoSuchMethodError: main执行java xiti8得到的错误提示Exception in thread "main" ng.NoClassDefFoundError: xiti8 (wrong name: Xiti8)执行java Xiti8.class得到的错误提示Exception in thread "main" ng.NoClassDefFoundError:Xiti8/class执行java Xiti8得到的输出结果I'm glad to meet you9.属于操作题,解答略。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3)Circle类具有类型为double的半径、周长和面积属性,具有返回周长、面积的功能。
定义Test3_2类,在其中编写一个main方法,在其中创建分别创建三个类的对象,并显示Circle,Lader,Trangle对象的属性信息和面积值。对Trangle对象,还要显示其是否可以构成三角形的信息。
(二)使用修饰符
有时需要公开一些变量和方法,有时需要禁止其他对象使用变量和方法,这时可以使用修饰符来实现这个目的。常用的修饰符如下。public,private,protected,package,static,final,transient,volatile
程序功能:通过两个类StaticDemo、KY2_4说明静态变量/方法与实例变量/方法的区别。
③将class CCircle中的变量double pi; double radius;加上private修饰符,进行编译会出现什么问题,为什么?
④将void setCircle(double r, double p),double getRadius()和double getCircleArea()加上修饰符static,重新编译会出现什么问题?仍用static,怎样修改别的地方来纠正这个错误?在main中引用这些方法时不用创建对象则怎样引用?
程序功能:描述一个圆类,其主要属性为半径,还有一个非常重要的常量是圆周率。该圆可以求出面积,可以设置半径和取得半径大小。
class CCircle
{ double pi;
double radius;
double getRadius()
{ return radius;
}
void setCircle(double r, double p)
void aaa()
{a=100;
System.out.println("classA的输出"+a);
}
}
class classB
{int b;
void bbb()
{b=200;
System.out.println("classB的输出"+b);
}
}
----------------------Ex5_2.java源代码--------------------------
1)Trangle类具有类型为double的三个边,以及周长、面积属性,Trangle类具有返回周长、面积以及修改三个边的功能。另外,Trangle类还具有一个boolean型的属性,该属性用来判断三个属能否构成一个三角形。
2)Lader类具有类型double的上底、下底、高、面积属性,具有返回面积的功能。
package mypackage1;
public class Ex5_2
{ public static void main(String args[])
{ classA objA=new classA();
classB objB=new classB();
objA.aaa();
objB.bbb();
定义Test3_1类,在其中编写一个main方法,在其中创建Car类的一个对象(“成龙”,200f,25f),并打印出该对象的属性值,可以看到如下输出信息:
车主姓名:成龙
当前车速:200
当前转向角度:25
修改车速后,车速变为:80
执行停车操作后,车速变为:0
2.三角形、梯形和圆形的类封装
编写一个Java应用程序,该程序中有3个类:Trangle、Leder和Circle,分别用来刻画“三角形”、“梯形”和“圆形”。具体要求如下:
cir1.setCircle(2.0,3.1416);
System.out.println("园半径="+cir1.getRadius());
System.out.println("园面积="+cir1.getCircleArea());
cir1.pi=3.14159;
cir1.radius=10.0;
编写类文件Demo3_4.java,程序源代码如下:
class StaticDemo {
static int x;
int y;
public static int getX() {
return x;
}
public static void setX(int newX) {
x = newX;
}
public int getY() {
1.不使用包(使用默认包)
在工程文件project1下创建两个java文件,一个是mypack.java文件,定义两个类classA和classB,类修饰符为默认。另一个是主类文件,在该类中使用classA和classB。两个java文件全部使用默认包。
----------------mypack.java源代码----------------------------
System.out.println("实例变量y="+StaticDemo.getY()); //非法,编译时将出错
StaticDemo a= new StaticDemo();
StaticDemo b= new StaticDemo();
a.setX(1);
a.setY(2);
b.setX(3);
②上条件不变,在主类class Demo3_6加进import mypackage1.*语句,再编译,看是什么编译错误?(提示:载入了mypackag1包,可以识别这两个class,但这两个类不是public,不能被不同包使用)
③将类classA和classB修饰为public再编译,看发生了什么?为什么?(提示:一个java文件中只能有一个public类且类名与文件名相同,因此每个public类用一个单独的java文件,且文件名与类名相同)
④上面通过编译后,再看Demo3_6还存在什么错误?(提示:classA和classB中的方法修饰符是默认的,另一个包中的代码允许访问吗?)
⑤将方法aaa()和bbb()修饰为public,重新编译,所有错误是否消失?无错误后可运行主类,观察运行结果。
四、实验练习题
1.设计一个用来描述汽车的类Car,使用类的实例成员变量来表示汽车的车主姓名(name)、当前的速度(speed)和当前方向盘的转向角度(tangle),使用类的实例成员方法来表示改变汽车的速度(setSpeed)、停车操作(stop)以及显示相关信息的方法(show)的操作。
}}
运行主类,观察运行结果。
【提示】如上两个实验表明封装在同包里的类,只要成员不是私有的,相互之间透明,相当在一个java文件中一样使用。
3.按【思考】提示理解打包的应用过程。
【思考】
①将主类文件Demo3_6.java封装在另一个包mypackage2,再进行编译,看编译结果提示什么错误?(提示:两者不在同包,classA和classB不能被识别)。
(3)编写体现类的继承性(成员变量、成员方法、成员变量隐藏)的程序;
(4)编写体现类的多态性(成员方法重载、构造方法重载)的程序。
三、实验内容
(一)Java类的设计与编程
1.创建一个Application应用程序Demo3_2.java文件.在Demo3_2.java文件中定义两个类。一个是CCircle,另一个是主类Demo3_2。
class classA
{ int a;
void aaa()
{a=100;
System.out.println("classA的输出"+a);
}
}
class classB
{int b;
void bbb()
{b=200;
System.out.println("classB的输出"+b);
}
}
----------------------Demo3_6.java源代码--------------------------
2.采用包。两个java文件用同一个包,即编译后的三个class文件放在同一个mypackage1包中。
----------------------mypack.java源代码----------------------------
package mypackage1;
class classA
{ int a;
}
}
对上面的源程序进行编译,排错并运行。
【思考】1.实例成员和类(静态)成员的区别;
2.说明程序中有多个类时,如何确定源程序文件的名称。
(三)包的定义与使用
包是类和接口的集合。利用包可以把常用的类或功能相似的类放在一个包中。Java语言提供系统包,其中包含了大量的类,可以在编写Java程序时直接引用它们。为便于管理和使用它们,将这些类分为了不同的包。包又称类库或API包,所谓API(Application Program Interface)即应用程序接口。API包—方面提供丰富的类与方法供大家使用,如画图形、播放声音等,另一方面又负责和系统软硬件打交道,圆满实现用户程序的功能。所有Java API包都以“java.”开头,以区别用户创建的包。
public class Demo3_6
{ public static void main(String args[])
{ classA objA=new classA();
classB objB=new classB();
objA.aaa();
objB.bbb();
}}
运行Demo3_6,观察运行结果。tY(int newY) {
y = newY;
}
}
public class Demo3_4 {
相关文档
最新文档