0722抽象类

//P140
//this用法 可以帮助在继承的子类中构造时节约一个对象 this(a,b);

 new String("Hello"); //产生了两个对象,constant pool;

单例类:资源单一,所以只希望该类产生唯一一个实例对象 

//为了防止其他类自由创建我的对象
    //构造函数写成private
            //提供一个public方法作为访问点,进行对象创建
                    //调用这个方法时,还没有对象。所以static该方法
                           //类必须知道自己是否曾已经创建过一个对象,保证唯一
                                  //类需要提供一个成语变量保存已经创建的对象
                                        //该成员变量需要被public static方法访问
                                                 //成语变量也必须是static

 

final关键字: ”不可变“

//P176

//final成员变量
    //普通的成员变量可以系统默认初始化
        //但是final只能被赋值一次,所以必须要求程序员显示地初始化
//final局部变量
    //系统本来就不会为局部变量初始化,不用担心
        //一个问题,函数(形参),在这个函数体里面,不准再改变形参的值了。传参已是一次了
//宏替换功能
    //初始值可以在编译的时候被确定下来
//final方法
    //不可以被重写
        //但是当父类是private时,我表示可以重写
//final类    
    //不可以有子类,防止被重写了
//final帮助实现不可变类

不可变类:

//P180  P184
//反正是不可以改变的
//可以缓存实例,创建Integer对象时,valueof()相比构造函数使用了这个功能
//P182
//注意:不可变类依赖于final实现,成员与方法的不可变
    //但是不是final类,NOT public final class
//一个特殊的问题,当该不可变类包含一个 引用类型的属性时,
    //引用对象(不变)内容的改变可能会导致该类改变
    public class Name
    {
        //普通,不是不可变类
    }
    public class Person
    {
         private final Name name;  //该属性为引用类型
         private Person(Name name)
         { 
             this.name=name;
         }
         //形参name的值可被改变,
    }
//解决方案:
    //传入形参时,根据形参的值,
    //自己new出一个Name的对象为this.name进行赋值

 

抽象类 :

 

 

 

==运算符与equals()方法,可以提供重写

宏替换的好处

创建对象顺序:对所有属性分配内存,并且为属性进行初始化,或者是声明时指定的初始值

                    再执行构造函数里的初始值。

         构造函数仅仅起到初始化的作用,并非内存创建对象作用。

包装类,自动装箱,自动拆箱(形参需要)

posted @ 2014-07-22 18:38  爱吃萝卜干  阅读(84)  评论(0编辑  收藏  举报