博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java第三次作业
阅读量:4842 次
发布时间:2019-06-11

本文共 3825 字,大约阅读时间需要 12 分钟。

学习总结

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程序里面添加。

代码托管()

1082644-20170404170343550-367813216.png

1082644-20170404170710832-1705103161.png

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

你可能感兴趣的文章
jquery动态调整div大小使其宽度始终为浏览器宽度
查看>>
这篇文章主要为大家详细介绍了jQuery密码强度验证控件使用详解的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...
查看>>
寒假作业
查看>>
iframe内联网页的应用
查看>>
android 开发 View _13 绘制图片与BitmapShader位图的图像渲染器
查看>>
[bzoj2131]免费的馅饼 树状数组优化dp
查看>>
CreateMutex()参数报错问题
查看>>
Linux三剑客-常用命令
查看>>
Excel的列数以数字格式查看
查看>>
unity 2d 和 NGUI layer
查看>>
Sublime Text shift+ctrl妙用、Sublime Text快捷组合键大全
查看>>
spring security中当前用户信息
查看>>
[中国寒龙出品]VB程序设计视频第十四课,更多请关注我们的官博。
查看>>
LinuxMint 17.1 Cinnamon桌面窗口焦点bug
查看>>
PHP函数
查看>>
缩点 CF893C Rumor
查看>>
Spring详解篇之 AOP面向切面编程
查看>>
COMP0037 Coursework
查看>>
Java第三次作业
查看>>
数据库的安装步骤
查看>>