JAVA作业 2017-4-6
- 1.什么是面向对象的封装性,Java中是如何实现封装性的?试举例说明。
封装就是把属性和方法捆绑到一起,封装到一个对象中去,形成一个不可分割的独立单位,修改属性的可见性来限制对属性的访问,并为每个属性创建一对取值方法和赋值方法,用于对这些属性的访问。
通过封装,可以实现对属性的数据访问限制,同时增加了程序的可维护性。
public class Worker { private int no; private Datet bir,sta; private String name,sex; private Home whome; public Worker(){} public Worker(String name,String sex,int no,Datet bir,Datet sta) { this.name=name; this.sex=sex; this.no=no; this.bir=bir; this.sta=sta; } public void setbir(Datet bir){ this.bir=bir; } public void setsta(Datet sta){ sta=sta; }
- 2.阅读下面程序,分析是否能编译通过?如果不能,说明原因。
class A{ private int secret = 5; } public class Test{ public static void main(String args[]){ A a = new A(); System.out.println(a.secret++); } }
不能,在A定义中对secret进行了封装,在主类函数内无法直接对secret进行操作。可以利用get set 方法,或者将secret变为 public属性。
public class Test{ int x = 50; static int y = 200; public static void method(){ System.out.println(x+y); } public static void main(String args[]){ Test.method(); } }
不能正确编译通过,因为没有定义类型为 Test 的对象,Test.method();应该在前面定义一个Test 对象,先在Test的定义里写出定义方法 比如
Public Test(int i){ i=i; }
然后定义一个Test对象
如 Test i=new Test();
- 3.使用类的静态变量和构造方法,可以跟踪某个类创建的对象个数。声明一个图书类,数据成员为编号,书名,书价,并拥有静态数据成员册数记录图书的总数。图书编号从1000开始,每产生一个对象,则编号自动递增(利用静态变量和构造方法实现)。下面给出了测试类代码和Book类的部分代码,将代码补充完整。
class Book{ int bookId; String bookName; double price; // 声明静态变量 private int count=0;
//定义静态代码块对静态变量初始化
public void Book(int bookId,String bookName,double price) { this.bookId=bookId; this,bookName=bookName; this.price=price; this.count=this.count+1; } //构造方法
public String getBookName() { return bookName; } public void setBookName(String bookName) { this.bookName = bookName; } public double getPrice() { return price; } public double getbookId() { return bookId; } public void setPrice(double price) { this.price = price; }
//定义方法求图书总册数
public int totalBook(Book[] x){
return count;
}
public void toString(Book x){
System.out.println("书名为"+BookName+"书号为"+bookId+"价格为"+Price);
}
//重写toString方法
}
public class Test{
public static void main(String args[]){
Book[] books = {new Book("c语言程序设计",29.3),
new Book("数据库原理",30),
new Book("Java学习笔记",68)};
System.out.println("图书总数为:"+ Book.totalBook());
for(Book book:books){
System.out.println(book.toString());
}
}
}
- 4.什么是单例设计模式?它具有什么特点?用单例设计模式设计一个太阳类Sun。
一个类型只有一个对象,在它的核心结构中只包含一个被称为单例的特殊类,通过单例模式可以保证系统中一个类只有一个实例。
public class Sun { private Sun(){} private static Sun x=new Sun(); public static Sun getx(){ return x; } }
-
5.理解Java参数传递机制,阅读下面的程序,运行结果是什么?说明理由。
运行结果为 输出 “你好 World”
str = "hello"; 这句代码只改变了str文本内容,并没有改变其地址中存储的值,所以没有改变输出的结果。
ch[0] = 'W'; 这句代码改变了该数组下标为0处的内容,能够修改值,所以w变成了W。 -
(二)实验总结
在本次实验中,巩固了对面向封装内容方面的知识。
![]()
http://git.oschina.net/hebau_cs15/cs01yy/tree/master/EX03?dir=1&filepath=EX03&oid=33c6cd7a644f3d03f2d5873cf1a2966c2ebde01c&sha=c2691ae2c277ff64c35838468ed9a21571a6443b

浙公网安备 33010602011771号