《Java技术》第二次作业--面向对象基础

(一)学习总结

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

构造方法是一种特殊的方法,与一般的方法不同是: 1.构造方法的名字必须与定义他的类名完全相同,没有返回类型,甚至连void也没有。 2.构造方法的调用是在创建一个对象时使用new操作进行的。构造方法的作用是初始化对象。 3.不能被static、final、synchronized、abstract和native修饰。构造方法不能被子类继承。 构造方法可以被重载。与一般的方法一样,构造方法可以进行任何活动,但是经常将他设计为进行各种初始化活动,比如初始化对象的属性。
构造方法的重载:在主函数中调用构造方法,相当于调用函数,只不过是用类声明了的。并且一个类可以有多个构造方法,系统有默认的构造方法,所以没有写也会自动补上。
该程序不能通过编译,因为构造方法在重载时没有返回值,可以在括号里加0;

2.运行下列程序,结果是什么?分析原因,应如何修改。

运行结果

调用数组对象为空,没有进行正常的初始化。
改正之后:

3.运行下列程序,结果是什么?说明原因。

结果为:


申请了两次内存空间,存相同的变量,但是比较的并不是值本身,也包括地址,因为申请的内存空间并不是一块,所以地址不同,输出false。
4.什么是面向对象的封装性,Java中是如何实现封装性的?试举例说明。
类的封装性即不能让外面的类随意修改一个类的成员变量;
在定义一个类的成员,使用private关键字说明这个成员的访问权限,只能被这个类的其他成员方法调用,而不能被其他的类中的方法所调用;
为实现封装性,常将类的成员变量声明为private,再通过public的方法来对这个变量进行访问。对一个变量的操作,一般都有 读取和赋值操作,我们一般定义两个方法来实现这两种操作,即:getxxx()与setxxx();
5.阅读下面程序,分析是否能编译通过?如果不能,说明原因。

不能通过编译,因为A类中的属性前边有private,说明该属性是私有属性,只能在本类中调用,若在测试类中想要调用,则可用get,set方法。

不能通过编译,必须将x定义为static类,变量若想在全局使用,则应该设为静态变量。
6.使用类的静态变量和构造方法,可以跟踪某个类创建的对象个数。声明一个图书类,数据成员为编号,书名,书价,并拥有静态数据成员册数记录图书的总数。图书编号从1000开始,每产生一个对象,则编号自动递增(利用静态变量和构造方法实现)。下面给出测试类代码和Book类的部分代码,将代码补充完整。



7.什么是单例设计模式?它具有什么特点?用单例设计模式设计一个太阳类Sun。
java中单例模式是一种常见的设计模式,单例模式分:懒汉式单例、饿汉式单例。
 单例模式有一下特点:
  1、单例类只能有一个实例。
  2、单例类必须自己自己创建自己的唯一实例。

class Sun{
      private Sun instance =  new Sun();
      private Sun(){ 

      }
      public static Sun getInstance(){
          return instance;
      }
}

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

通过构造方法实例化对象,优先输出;

1.用面向对象思想完成评分系统
程序设计思路:分别定义选手类,分数类,测试类,在测试类中运用
2.Email验证:
4.统计文件
学会方法的调用
5.类的设计
码云提交记录截图

posted @ 2018-04-01 22:48  Shirley软妹  阅读(139)  评论(1编辑  收藏  举报