java类和对象实验_第1页
java类和对象实验_第2页
java类和对象实验_第3页
java类和对象实验_第4页
java类和对象实验_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验八:类和对象实验目的:1 掌握类的定义,熟悉属性、构造函数、方法的作用,掌握用类作为类型声明变量和方法返回值;2 理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的方法和属性,理解static的作用和使用规则;3 理解访问控制修饰符的作用;实验数据记录及分析(或程序及运行结果)1. 写出运行结果public class Reference public static void main(String args) double d=12.3; Decrement dec=new Decrement();dec.decrement(d); System.out.println(d);class Decrement public void decrement(double me)/参数传递 me = me-1.0;预行结果是:12.3分析原因:me是引用类型的参数,参数值不改变 2. 给出下面的类,找出后面的5个声明中,哪些是重载后的构造函数public class ConstOver public ConstOver (int x, int y, int z) A. ConstOver ( ) B. Protected int ConstOver ( ) C. Private ConstOver (int z, int y, byte x) D. Public Object ConstOver (int x, int y, int z) E. Public void ConstOver (byte x, byte y, byte z) A、C是重载后的构造函数3. 解释下面的程序运行的结果输出为什么是null public class My String s; public void My()s=”Constructor”;public void Go()System.out.println(s);public static void main(String args) My m=new My(); m.go();因为程序中s=”Constructor”;是在方法My中进行的,Main方法中并没有调用方法My,所以s的值是null4.运行下面的程序,写出运行结果,写出类成员属性和实例成员属性的区别。class MyParts static/初始化 先于构造方法的执行 x=10;public static int x = 7; public int y = 3; public class JLab1101public static void main(String args) MyParts a = new MyParts();MyParts b = new MyParts();System.out.println(输出一:a.x = + a.x); System.out.println(输出一:b.x = + b.x);a.y = 5;b.y = 6;a.x = 1;b.x = 2;System.out.println(输出二:a.y = + a.y);System.out.println(输出二:b.y = + b.y);System.out.println(输出三:a.x = + a.x);System.out.println(输出三:b.x = + b.x); 1) 输出一的结果是什么,它的值的来源是什么,反映了什么特性?输出一:a.x = 7 输出一:b.x = 7 来源于public static int x=7在static中定义的属性,只能通过静态方法调用2) 输出二的结果是什么,它的值的来源是什么,反映了什么特性?输出二:a.y = 5 输出二:b.y = 6 来源于a.y = 5; b.y = 6; 实例成员的属性,可以分别对他进行赋值。3) 输出三的结果是什么,它的值的来源是什么,反映了什么特性?输出三:a.x = 2 输出三:b.x = 2 值来源于b.x=2;类成员属性是全局变量,后面的赋值会覆盖前一个。5.写出程序运行结果class StaticDemo static int x;int y; static x=10;public static int getX() return x;public static void setX(int newX) x = newX;public int getY() return y;public void setY(int newY) y = newY;public static void main(String args) System.out.println(静态变量x=+StaticDemo.getX();/System.out.println(实例变量y=+StaticDemo.getY(); /非法,编译时将出错StaticDemo a= new StaticDemo();StaticDemo b= new StaticDemo();a.setX(1);a.setY(2);b.setX(3);b.setY(4);System.out.println(静态变量a.x=+a.getX();System.out.println(实例变量a.y=+a.getY();System.out.println(静态变量b.x=+b.getX();System.out.println(实例变量b.y=+b.getY();运行结果:静态变量x=10静态变量a.x=3实例变量a.y=2静态变量b.x=3实例变量b.y=46. 编写一个圆形类Circle,定义其成员变量(半径):double radiusi. 该类含有两个构造函数:public Circle(double r) 初始化半径为rpublic Circle() 初始化半径为1ii. 该类含有下列方法:public double area() 返回圆形的面积public double circumference() 返回圆形的周长public String toString() 返回该类对象的文字描述,如:Circle半径是2.5public void setRadius(double r) 设置半径为rpublic double getRadius() 返回半径的值。iii. 编写一个含有主方法的类JLab0301,完成下列验证:1 在主方法中用创建一个半径为10的Circle类的实例myCircle1,输出它的周长和面积;程序:Circle c1=new Circle();c1.setRadius(10);System.out.println(圆的面积是:+c1.area();System.out.println(圆的周长是:+c1.circumference();运行结果:圆的面积是:314.0圆的周长是:62.8000000000000042 在主方法中用创建一个不指定半径的Circle类的实例myCircle2,输出它的周长和面积,然后利用修改半径的方法设置它的半径为5,再次输出它的周长和面积。程序:Circle c2=new Circle();System.out.println(圆的面积是:+c2.area();System.out.println(圆的周长是:+c2.circumference();c2.setRadius(5);System.out.println(圆的面积是:+c2.area();System.out.println(圆的周长是:+c2.circumference();运行结果:圆的面积是:3.14圆的周长是:6.28圆的面积是:78.5圆的周长是:31.4000000000000027.一副牌Deck有52张扑克Card组成(不含王牌),每张牌有自己的牌型suit和点数rank,完成下面的要求。1) 定义一个类Card,表示每张扑克牌public class Card char suit; String rank; public Card(char suit, String rank) this.suit = suit;this.rank = rank;public String toString() return suit+-+rank; 2) 写出toString()方法的作用 显示牌的牌型和点数3) 定义一个类Deck,表示一副牌,每副牌包含52张牌,考虑有什么样的属性和方法,Deck和Card之间属于什么关系。属性:牌的张数:size 方法:初始化牌、输出牌、洗牌关系:聚合。8.输入下面的类,结合上题中的Card类,完成下面的要求public class JLab1103 static final char suits =H,S,D,C;static final String ranks =A,2,3,4,5,6,7,8,9,10,J,Q,K;static Card cards=new Card52;/* * 初始化扑克牌数组 */public static void init()for(int i=0;isuits.length;i+)for(int j=0;jranks.length;j+)cardsi*ranks.length+j=new Card(suitsi,ranksj);P1 p21001(24) 1002(32)C1 c21001(32) 1002(24)public static void swap1(Card c1,Card c2)Card c=c1;c1=c2;c2=c;public static void swap1(int i,int j)Card c=cardsi;cardsi=cardsj;cardsj=c;public static void swap2(Card c1,Card c2)char s=c1.suit;c1.suit=c2.suit;c2.suit=s;String r=c1.rank;c1.rank=c2.rank;c2.rank=r;/* * param args */public static void main(final String args) init();/任取两张牌Card c1=cards10;Card c2=cards12;System.out.println(第11张牌是:+c1+t第13张牌是:+c2);1) 在main方法中,添加下面几行语句,写出并分析结果swap1(c1,c2);System.out.println(执行swap1(c1,c2)后);System.out.println(c1引用的牌是:+c1+tc2引用的牌是:+c2);System.out.println(第11张牌是:+cards10+t第13张牌是:+cards12);运行结果:第11张牌是:H-J第13张牌是:H-K执行swap1(c1,c2)后c1引用的牌是:H-Jc2引用的牌是:H-K第11张牌是:H-J第13张牌是:H-K2) 在main方法中,去掉刚才添加的语句,添加下面几行语句,写出并分析结果swap1(10,12);System.out.println(执行swap1(10,12)后);System.out.println(c1引用的牌是:+c1+tc2引用的牌是:+c2);System.out.println(第11张牌是:+cards10+t第13张牌是:+cards12);运行结果:第11张牌是:H-J第13张牌是:H-K执行swap1(10,12)后c1引用的牌是:H-Jc2引用的牌是:H-K第11张牌是:H-K第13张牌是:H-J3) 在main方法中,去掉刚才添加的语句,添加下面几行语句,写出并分析结果swap2(c1,c2);System.out.println(执行swap2(c1,c2)后);System.out.println(c1引用的牌是:+c1+tc2引用的牌是:+c2);System.out.println(第11张牌是:+cards10+t第13张牌是:+cards12);运行结果:执行swap2(c1,c2)后c1引用的牌是:H-Kc2引用的牌是:H-J第11张牌是:H-K第13张牌是:H-J9.一个Fan有自己的品牌,其调速旋钮speed可以调整Fan的速度(档级在0、1、2、3范围内),通电开关可以改变电扇状态(通电表示工作就绪或者工作,断电表示停止工作)请仔细分析并提供Fan类的定义。并编写程序对其进行测试。具体要求如下:b) 表示该类对象的状态可以用品牌(brand,可以用字符串型表示,因为品牌通常都是多个字符组成的)、工作状态(status,用来反映一个电风扇是否处于通电就绪ready、正在转动working或者静止stop)、当前的速度(speed,可以用数值型表示);c) 用构造函数可以创建一个电风扇对象,指定其品牌就可以了,一个电风扇的初始状态可以是静止,而且初始速度为,分析为什么不适宜直接通过构造函数的形式参数来指定初始状态和速度;d) 考虑是否应该给该类提供如下的方法,重点考虑每个动作导致的状态变化,形成代码逻辑;l 模拟一个开关动作,提供一个方法来表示电风扇的开与关l 通过加速和减速两个方法来调整速度,当速度超出极限(0或),向控制台输出一条告警信息作为提示,并且不执行该动作。l 提供一个方法能够返回电风扇当前的状态和速度e) 添加一个main方法,按顺序完成以下工作,考虑状态与速度变化和开关动作之间的关系:l 创建一个电风扇对象,用表示;l 加速一次电风扇;l 向控制台输出f的状态和速度;l 启动电风扇(调用对象的开关方法);l 向控制台输出f的状态和速度;l 连续加速次(考虑发生什么情况);l 向控制台输出f的状态和速度;l 连续减速次(考虑发生什么情况);l 向控制台输出f的状态和速度;l 关掉电风扇(调用对象的开关方法);l 连续加速2次l 向控制台输出f的状态和速度;运行结果:品牌:美的,速度:0,当前状态:通电未工作已经是最大速度,无法加速品牌:美的,速度:3,当前状态:通电工作已经是最小速度,无法减速品牌:美的,速度:0,当前状态:通电未工作品牌:美的,速度:2,当前状态:未通电10.分析程序,写出运行结果,解释原因。public class Teststatic int i=0;public int aMethod()i+;return i;public static void main (String args)Test test = new Test();test.aMethod();int j = test.aMethod();System.out.printIn(j);运行结果:2执行 test.aMethod()后,i的值为1;运行j=test.aMethod();后,j=2;12.分析下面的程序,完成

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论