十一、对象的生命周期、构造方法、静态工厂方法、单例类、枚举类、不可变类

一、请问如何创建对象的方式都有哪些?

答:①用new语句创建对象;

②调用对象的clone()方法;

③运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。

④运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法。

二、请问构造方法满足哪些语法规则?负责什么?

答:①方法名必须与类名相同;

②无返回值;

③不能被static,final,synchronized,abstract和native修饰。

构造方法负责对象的初始化工作,为实例变量赋予合适的初始值。

三、请问重载构造方法是干什么的?

答:可通过重载构造方法来表达对象的多种初始化行为。java语言允许在一个构造方法中,用this语句来调用另一个构造方法,this必须作为构造方法的第一条语句。

四、请问子类可以继承父类的构造方法吗?

答:不能。但可以通过super语句来调用父类的构造方法,super语句必须作为构造方法的第一条语句。

五、请问构造方法的作用域有哪些?

答:①当前类的其他构造方法通过this语句调用它。

②当前类的子类的构造方法通过super语句调用它。

③在程序中通过new语句调用它。

六、请问构造方法的访问级别有哪些?

答:public、protected、默认和private。

七、请问静态工厂方法有哪些命名?

答:①valueOf():该方法返回的实例与它参数具有同样的值。能执行类型转换操作。

②getInstance():返回的实例与参数匹配。

八、请问静态工厂方法最主要的特点是什么?

答:每次调用的时候,不一定要创建一个新的对象。

九、请谈谈单例类,并说说如何实现?

答:单例类是指仅有一个实例的类。在系统中具有唯一性的组件可作为单例类。这种类的实例通常会占用较多的内存,或者实例的初始化过程比较冗长。Struts框架的ActionServlet类,Hibernate的SessionFactory和Configuration类都是单例类。

实现方式:

①构造方法私有化,提供public static final类型的静态常量,该常量应用类的唯一的实例。

优点:实现起来比较简洁,而且根据类的成员的声明,能清楚地反映该类是单例类。

②构造方法私有化,提供public static类型的静态工厂方法。

优点:更灵活地决定如何创建类的实例,在不改变类的接口的前提下,可以修改静态工厂方法getInstance()的实现方式。

十、请你谈谈你对枚举类的认识?

答:枚举类是指实例数目有限的类。通常这样设计:

①构造方法私有化;

②提供一些public static final类型的静态变量,每个静态变量引用类的一个实例。

③如果需要的话,提供静态工厂方法,允许用户根据特定参数获得与之匹配的实例。

十一、请问用一个int类型的变量也能表示性别,比如表示女性,用1表示男性,这样不会使程序更简洁吗?为什么要用枚举类?

答:比如在Person类的构造方法中,gender参数为int类型,编程人员可以为gender参数传递任意整数值,如果传递的gender参数是无效的,那么java编译器不会检查这种错误,只有到运行时才会抛出IllegalArgumentException。

如果使用Gender枚举类,在Person类的构造方法中,gender参数为Gender类型,编程人员只能把Gender类型的实例传给gender参数,否则就通不过java编译器的类型检查。由此可见,枚举类能提高程序的健壮性,减少程序代码出错的机会。

十二、请你谈谈对不可变类的理解?

答:不可变类,是指当创建了这个类的实例后,就不允许修改它的属性值。所有的基本类型的包装类都是不可变类。

十三、如何创建自己的不可变类?

答:①把属性定义为private final类型。

②不对外公开修改属性的setXXX()方法;

③只对外公开用读取属性的getXXX()方法;

④在构造方法中初始化所有属性。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值