java 第三次实验作业关于封装

1.什么是面向对象的封装性

所谓面向对象的封装性就是我们面对生活中各种物体,我们使用着他的功能,而不用去探究它里面的什么功能,封装性就是面向对象的第一大特征,所谓封住行就是指他对外部不可见。
然后java中实现封装性就是利用set和get的方法,还有声明变量的时候就是和公共的类型就有不同了就是把其中的public,更改成private;之后再利用他的set和get方法去调用和得到,其实我理解就是不能公开的变量然而就转变成了set和get方法,去调用。比如

这里的datetime类的封装的变量分别是,year,month和days,就利用set和get方法


这里调用初始化就是调用的set方法;

2.程序分析#

首先这个程序是错的,下面的公共属性没有在class a类里面,而且这个主函数里面的内容不是静态的,还得把static去掉,之后就变成了这样。

3.程序分析#

这个程序也是错误的,这里的x和y都应该是静态的所以在int 下,前面加一个static,就可以了。

4.程序分析#

package 实验二;
class Book{
private int bookId;
private String bookName;
private double price;
private int score;
// 声明静态变量
static{
	int score=100;
}
//定义静态代码块对静态变量初始化
 public void Book(String bookName,double price){
	this.bookName=bookName;
	this.price=price;
	bookId=score;
	bookId=bookId+1;
} 
//构造方法
 public int setscore(){
	 return score;
 }
 public void getscore(int score){
	 this.score=score;
 }
 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 void totalBook(){
	bookId=bookId-score;
}
    public String toString(){
		return "书名:" +bookName+"价格为:"+price+"书店书的数目为:"+bookId;
    	
    }
//重写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());
    }
}   
}

5.什么是单例设计模式?它具有什么特点?用单例设计模式设计一个太阳类Sun#

设计模式就是设计程序的一种方法的总结,比如单例模式

public class A {
private static final A a = new A() ;
private A(){}
public static A getInstance(){
    return a ;
}
}

这样A永远只能有一个实例,因为他的构造方法已经是私有的,必须通过方getInstance方法来获取实例而且无论是多线程还是单线程无论获得多少次只有一个A的对象在为你服务。然而他是面向对象正好区别于c。

 public class Sun{
 private static final Sun instance = new Sun();
 private Sun(){         
 }
 public static Sun getInstance(){
     return instance;
 }
	}

6.理解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';
}
}

运行结果是:你好 world
ch[]储存到栈内存内,他的地址被公共属性change所占用,ch[0]被改变为‘W’;str存储到堆内存内,change调用的是str的副本,不能改变str的内容

7.实验总结#

程序设计思路:具体的设计的思路就是,利用简单类的设计还用this关键字的用法,引用传递基本掌握。
遇到的问题:就是就是计算数学问题的时候,都是double方法的,想保留小数点后两位。
原因:因为需要用户去回答,总不能总是那末精确,所以就需要四舍五入或者是保留两位小数。
解决的办法:学会一种利用引用,第一步先引用

import java.text.DecimalFormat

第二部就是实例化对象

DecimalFormat scanf=new DecimalFormat("0.00");

第三部就是就可以去约束了比如半径r

System.out.println("半径为:"+scanf.format(r));

8.码云截图和链接#


码云链接为:https://git.oschina.net/hebau_cs15/cg.git

posted @ 2017-04-03 14:52  计科陈刚  阅读(303)  评论(1编辑  收藏  举报