Java第二次作业

一、学习总结
1.什么是构造方法?什么是构造方法的重载?下面的程序是否可以通过编译?为什么?

(1)构造方法用于在创建对象时对其进行初始化。
Person per=new Person();
特点:
( 1)方法名与类名相同;
( 2)方法名前没有返回值类型的声明,方法中不能使用return语句返回一个值;
(3)用户不能直接调用,而是通过关键字new自动调用;
(4)在构造方法的实现中,也可以进行方法的重载。
如果一个类中没有声明一个明确的构造方法,则Java运行系统会自动提供缺省的构造方法,它没有任何参数,什么也不做。
(2)构造方法的重载就是方法名称相同,但参数的类型和参数的个数不同,通过传递参数的个数及类型不同以完成不同功能的方法调用。
(3)该程序不可以运行,因为只定义了一个有参构造方法;如果在一个类中已经明确了地声明了一个构造方法,那么程序在编译时将不会再生成默认的构造方法。
2.运行下列程序,结果是什么?分析原因,应如何修改。

结果:

原因:只定义了对象数组但是没有对它进行实例化;数组里的每一个对象都需要进行实例化。
修改:对数组里的元素进行实例化
3.运行下列程序,结果是什么?说明原因。

结果:

原因:
obj1与obj2的地址空间不相同。
4.什么是面向对象的封装性,Java中是如何实现封装性的?试举例说明
(1)类中并不是所有的信息都能让用户可见的,因此隐藏这些信息就很有必要。这就是面向对象封装性的要求。
(2)封装性的目的:保护当前类的某些属性和方法不被外部所见。
(3)封装性的实现:Java的封装是通过private修饰符来声明属性和方法实现的。

5.阅读下面程序,分析是否能编译通过?如果不能,说明原因。
(1)

该程序不能编译通过
原因:因为secret是私有属性private的,不能在类外直接访问。
(2)
该程序不能编译通过
原因:x没有被static修饰
6.使用类的静态变量和构造方法,可以跟踪某个类创建的对象个数。声明一个图书类,数据成员为编号,书名,书价,并拥有静态数据成员册数记录图书的总数。图书编号从1000开始,每产生一个对象,则编号自动递增(利用静态变量和构造方法实现)。下面给出测试类代码和Book类的部分代码,将代码补充完整。
class Book{
int bookId;
String bookName;
double price;
// 声明静态变量
public static int a;
//定义静态代码块对静态变量初始化
static {
a=0;
}
//构造方法
public Book(String bookName,double price) {
this.bookName=bookName;
this.price=price;
this.bookId=a;
a++;
}
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 int totalBook() {
return a;
}
//重写toString方法
public String toString() {
return "编号:"+bookId+"书名:"+bookName+"价格:"+price+"图书总数目"+a;
}
}
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());
}
}
}

7.什么是单例设计模式?它具有什么特点?用单例设计模式设计一个太阳类Sun。
(1)将采用的单例设计模式的类的构造方法私有化;
(2)在其内部产生该类的实例化对象,并将其封装成prviate static类型。
(3)定义一个静态方法返回该类的实例。

8.理解Java参数传递机制,阅读下面的程序,运行结果是什么?说明理由。

原因:没有改变主方法中的str的值。
(二)实验总结
1、定义三个类:选手类,平分类,测试类。

2.Email验证
思路:先输入email地址
然后编写方法判断地址是否有效
问题:不以@开头不代表可以以“.”开头
(三)代码托管(https://gitee.com/hebau_java_cs16/ex34)

posted on 2018-04-01 18:15  张培蕾  阅读(163)  评论(0编辑  收藏  举报

导航