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; } }