作业5 抽象与封装三

  • 格式:doc
  • 大小:45.00 KB
  • 文档页数:4

作业五抽象与封装三
确定以下代码段中是否存在错误,如果有错误,指出是逻辑错误还是语法错误,请在程序中用“绿色”标出错误的地方,并在每个练习的空白处写下正确的代码。

如果代码中没有错误,则在答案中写上“没有错误”。

注意:在每个程序段中可能包含多处错误。

问题1 、以下代码定义了Product类,它有一个不带参数的构造方法,将产品的名称设置为一个空的String,将price设置为0.00;该类还有一个toProductString方法,它返回一个包含产品的name和price的String
import java.text.*;
public class Product{
private String name;
private double price;
private static DecimalFormat money=new DecimalFormat("$0.00");
public Product()
{
name=" ";
price=0.00;
}
Public String toProductString()
{
return name+" costs "+money.format(price);
}
}//end class Product
答案:没有错误
问题2 、如下代码定义了Product类的另一个构造方法,它有2个参数,并将这些参数赋给相应的实例变量
public Product(String name, double price)
{
name= name;
price=price;
}
答案:
= name;
this.price=price;
若类的构造方法中的参数与类的实例变量命名为相同的名称,在成员方法中引用的变量名为局部变量,若想引用视力变量就要加上this
问题3、如下代码定义了两个set方法,用于设置Product类的name和price
public setName( )
{
=name;
}
public setPrice( )
{
this.price=price;
}
答案:
逻辑错误,没有void,
编译错误,没有成员变量名
改为:
public String setName( )
public double setPrice( )
问题4 、如下代码位于测试Product类的应用程序的main方法中,创建一个Product对象,并显示一个包含对象的实例变量值的String
Product p1=new Product("Milk", 5.5);
System.out.println(+ " "+p1.price);
没有错误
问题5 、如下代码位于测试Product类的应用程序的main方法中,创建一个Product对象,设置其实例变量的值,并显示一个包含实例变量值的String
Product p1=new Product();
p1.setName();
p1.setPrice();
System.out.println(p1.toProductString("Eggs",3));
答案:语法错误
public static void main (String[] args){Product p1=new Product("Eggs",3);
p1.setName();
p1.setPrice();
System.out.println(p1.toProductString());}
格式化的方法打包
类与类成员访问权限实验不同包之间的类
将下面的文件AccessTest.java保存到d:\test\sources目录下, 然后按步骤进行实验并回答问题.
//AccessTest.java
import .zucc.*;
class AccessTest{
public static void main(String[] args){
First a = new First();
System.out.println(a.i);//语句1
System.out.println(a.j);//语句2
System.out.println(a.k);//语句3
System.out.println(a.m);//语句4
a.show1();//语句5
a.show2();//语句6
a.show3();//语句7
a.show4();//语句8
}
}
问题6 、在命令提示符下, 敲入下面的命令编译程序
D:\> javac -classpath d:\test\classes -d d:\test\classes d:\test\sources\AccessTest.java
那么程序中的语句1到语句8是否编译出错, 如果出错,写明原因:
语句1出错? 为何?
语句2出错? 为何?
语句3出错? 为何?
语句4出错? 为何?
语句5出错? 为何?
语句6出错? 为何?
语句7出错? 为何?
语句8出错? 为何?
问题7 、通过/* */将上面程序的语句1到语句8都注释掉,并在main方法中语句8后增加下面的代码:
A b = new A();//语句9
b.show(); //语句10
然后重新编译程序, 是否出错?
出错原因:。