Java第三次作业

学习总结

1.什么是面向对象的封装性,Java中是如何实现封装性的?试举例说明。

封装就是保护程序里面的内容。保证某些属性或方法可以不被外部看见。
实现封装:属性或方法封装:private 属性类型 属性名称;
private 方法返回值 方法名称(参数列表){}
访问封装内容时,需要编写setter及getter方法完成。
1082644-20170404164221769-1112093770.png

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

这段程序并不能通过编译。他用了封装,无法访问封装内容,应该加入setter以及getter方法。

class A{
     int secret = 5;

    public int getSecret() {
        return secret;
    }

    public void setSecret(int secret) {
        this.secret = secret;
    }
}
public class Test{
    public static void main(String args[]){
        A a = new A();
        System.out.println(a.secret++);
    }
}

(二)

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

程序中x和y类型不同,x不是静态的,程序中不能对非静态字段进行引用。改为

public class Test{
    static int x = 50;
    static int y = 200;
    public static void method(){
        System.out.println(x+y);
    }
    public static void main(String args[]){
        Test.method();
    }
}
3 . 使用类的静态变量和构造方法,可以跟踪某个类创建的对象个数。声明一个图书类,数据成员为编号,书名,书价,并拥有静态数据成员册数记录图书的总数。图书编号从1000开始,每产生一个对象,则编号自动递增(利用静态变量和构造方法实现)。下面给出了测试类代码和Book类的部分代码,将代码补充完整。
class Book{
    int bookId;
    String bookName;
    double price;
    // 声明静态变量
    
    //定义静态代码块对静态变量初始化
    
    //构造方法
    
     public String getBookName() {
        return bookName;
    }
    public void setBookName(String bookName) {
        this.bookName = bookName;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = 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());
        }
    }   
}
class Book{
    int bookId;
    String bookName;
    double price;
    // 声明静态变量
    
    //定义静态代码块对静态变量初始化
    
    //构造方法
    
     public Book(String bookName, double price) {
        this.bookName =bookName;
        this.price =price ;
    }
    public String getBookName() {
        return bookName;
    }
    public void setBookName(String bookName) {
        this.bookName = bookName;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }  
    //定义方法求图书总册数
    public static String totalBook() {
        
        String nember = null;
        return nember;
    }
    
    //重写toString方法
    
}
public class C{
    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.什么是单例设计模式?它具有什么特点?

Java中单例模式是一种常见的设计模式,分为三种:懒汉式单例,饿汉式单例,登记式单例。
单例模式有以下特点:
(1)单例类只能有一个实例
(2)单例类必须自己创建自己的唯一实例
(3)单例类必须给所有其他对象提供这一实例
单例模式确保某个类只有一个实例,并且自行实例化并向整个系统提供这个实例。总之,选择单例模式就是为了避免不一致状态,避免政出多头。

5.理解Java参数传递机制,阅读下面的程序,运行结果是什么?说明理由。
public class Test {
    String str = new String("你好  ");
    char[] ch = { 'w','o','l','l','d' };
    public static void main(String args[]) {
        Test test = new Test();
        test.change(test.str, test.ch);
        System.out.print(test.str);
        System.out.print(test.ch);
    }
    public void change(String str, char ch[]) {
        str = "hello";
        ch[0] = 'W';
    }
}

程序有问题
关于Java的传递机制没设置好,之前的test程序里面没有相应的str和ch字段,再在test程序里面添加。

代码托管(https://git.oschina.net/hebau_cs15/Java-cs01zzy.git

1082644-20170404170343550-367813216.png
1082644-20170404170710832-1705103161.png

转载于:https://www.cnblogs.com/zhaoziying/p/6665470.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值