班级:姓名:学号:成绩面向对象编程基础(一)简单的类和对象实验目的:1.掌握类的定义,熟悉属性、构造函数、方法的作用,掌握用类作为类型声明变量和方法返回值;2.理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的方法和属性;实验数据记录及分析(或程序及运行结果)1.写一个名为Rectangle的类表示同一种颜色的矩形类。
其成员属性包括宽width、高height,类属性包括颜色color(默认颜色是蓝色),width和height都是double型的,而color则是String类型的。
要求该类具有:(1)合理的构造函数,完成各属性的初始赋值(2)使用get和set的形式完成各个属性的访问及修改(3)计算面积的getArea()方法(4)合理的toString方法。
主函数如下:public static void main(String[] args) {Rectangle r;System.out.println("创建一个默认初值的矩形:");r = new Rectangle();System.out.println("\t" + r);System.out.println("修改具有默认初值矩形的宽为10,高为20:");r.setWidth(10);r.setHeight(20);System.out.println("\t" + r);System.out.println("修改所有矩形对象的颜色为红色");Rectangle.setColor("红色");System.out.println("\t" + r);System.out.println("创建一个宽10,高30的矩形");r = new Rectangle(10, 30);System.out.println("\t" + r);System.out.println("创建一个边长为1的正方形:");r = new Rectangle(1);System.out.println("\t" + r);}2.一副牌Deck有52张扑克Card组成(不含王牌),每张牌有自己的牌型suit(用char类型)和点数rank(用String类型),补充完整下面的类的定义。
public class Card {补充代码public Card( 补充代码 ) {this.suit = suit;this.rank = rank;}public String toString() {return suit+rank; //红10 黑3}public static void main(String[] args){Card c=new Card('黑',"10");System.out.println(c.toString());}}3.程序运行后的输出是什么?class TestReference{public static void main(String[] args){int x=2;TestReference tr = new TestReference();System.out.print(x);tr.change(x);System.out.print(x);}public void change(int num){num = num + 1;}}结果是:224.写出程序运行结果public class Foo {public static void main (String [] args) {StringBuffer a = new StringBuffer (“A”);StringBuffer b = new StringBuffer (“B”);operate(a,b);//调用了Foo类的一个类方法System.out.println(a + “,” +b);}static void operate (StringBuffer x, StringBuffer y) { x.append(y);y = x;}}运行结果是:AB,B5.解释下面的程序运行结果输出为什么是nullpublic 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();}}主函数并没有调用My()方法6.给出下面的类,找出后面的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,B,C,E7.给出下面的类,找出后面的5个声明中,哪些是重载后的setVar函数public class MethodOver {public void setVar (int a, int b, float c) {}}A. Private void setVar (int a, float c, int b) { }B. Protected void setVar (int a, int b, float c) { }C. Public int setVar (int a, float c, int b) {return a;}D. Public int setVar (int a, int b, float d) {return a;}E. Protected float setVar (int a, int b, float c) {return c;}选择:C8.下列程序有错误,调试、写出错误原因并改正。
public class VariableScope {public static void main(String args[]){int i=10;{int k=10;System.out.println("i="+i);System.out.println("k="+k);}System.out.println("i="+i);System.out.println("k="+k);}}错误原因:K是在里面括号里,变量K是局部变量,外面输入k并不能调用;改成:public class VariableScope {public static void main(String args[]){int i=10;int k=10;{System.out.println("i="+i);System.out.println("k="+k);}System.out.println("i="+i);System.out.println("k="+k);}}9.输入下面的类,结合题2中的Card类,完成下面的要求public class JLab1201 {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 Card[52];public static void init(){for(int i=0;i<suits.length;i++){for(int j=0;j<ranks.length;j++){cards[i*ranks.length+j]=new Card(suits[i],ranks[j]);}}}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=cards[i];cards[i]=cards[j];cards[j]=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;}public static void main(final String[] args) {init();//任取两张牌Card c1=cards[10];Card c2=cards[12];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张牌是:"+cards[10]+"\t第13张牌是:"+cards[12]);运行结果是:执行swap1(c1,c2)后c1引用的牌是:HJ c2引用的牌是:HK第11张牌是:HJ 第13张牌是:HK2) 在main方法中,去掉刚才添加的语句,添加下面几行语句,写出并分析结果swap1(10,12);System.out.println("执行swap1(10,12)后");System.out.println("c1引用的牌是:"+c1+"\tc2引用的牌是:"+c2);System.out.println("第11张牌是:"+cards[10]+"\t第13张牌是:"+cards[12]);运行结果是:执行swap1(10,12)后c1引用的牌是:HJ c2引用的牌是:HK第11张牌是:HK 第13张牌是:HJ3) 在main方法中,去掉刚才添加的语句,添加下面几行语句,写出并分析结果swap2(c1,c2);System.out.println("执行swap2(c1,c2)后");System.out.println("c1引用的牌是:"+c1+"\tc2引用的牌是:"+c2);System.out.println("第11张牌是:"+cards[10]+"\t第13张牌是:"+cards[12]);运行结果是:执行swap2(c1,c2)后c1引用的牌是:HK c2引用的牌是:HJ第11张牌是:HK 第13张牌是:HJ10.银行的账户记录Account有账户的唯一性标识(19个长度的数字字符的组合,用6228开头),用户的姓名,开户日期(Date),账户密码(六位的数字,可以用0开头),当前的余额。