鸟哥Java学习之单例设计、继承-面向对象

来源:互联网 发布:ctr预估算法 编辑:程序博客网 时间:2024/05/17 05:57
    1.若类中的方法都是静态的,该类是不需要创建对象的。可以将工具类中的构造函数私有化private,保证不让其他成员创建对象。
    这种情况比较少,多为一些工具类,主函数直接类名调用,大多数类都封装了特有数据,所以不需静态。

    2.单例设计模式:保证一个类在内存中的对象唯一性。
    必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。
思路:1.不允许其它程序用new创建对象,即私有化构造函数2.在该类中创建一个本类实例3.对外提供一个公共方法让其他程序可以获取该对象//饿汉式class singel //类已加载对象已存在{    private static singel s = new singel();/*加private不暴露成员,不让别人修改,屏蔽作用*/    private singel(){}    pubilc static singel getinstance()/*成员可控*/    {        return s;    }}//懒汉式,多线程技术访问时,有安全隐患,可能无法保证对象唯一性。class singel2 //类加载无对象,调用方法才会创建,延迟加载形式。{    private static singel2 s = null;/*加private不暴露成员,不让别人修改,屏蔽作用*/    private singel2(){}    public static singel2 getinstance()/*成员可控*/    {        if(s==null)s = new signel2();        return s;    }}
    3.继承:
    让类与类间产生关系,为第三个特征多态提供前提。格式:extends 类名
    java中支持单继承(一个子类只能有一个直接父类),不直接支持多继承(多个直接父类),因为多个父类中有相同成员会产生调用的不确定性。但对c++中的多继承机制进行改良。支持多层(重)继承。
    当要使用一个继承体系时,查看该体系的顶层类,了解基本功能,创建体系中的最子类对象,完成功能的使用。
    注意:A(子类)继承B(父类)

    子父类中成员变量特点:
        同名时用super区分父类,与this用法相像。但this代表一个本类对象的引用,super代表一个父类空间。子类不能直接访问父类私有内容,父类可以提供方法。

    子父类中成员函数特点:
        覆盖:子父类中成员函数一样。函数两个特性,重载:在同一个类中,overload。
        注意:子类方法覆盖父类时,子类权限必须大于等于父类;静态只能覆盖静态或被静态覆盖。
        覆盖的应用:当对一个类进行子类的扩展时,子类需要保留父类的功能声明,但是要定义子类中该功能的特有内容时,就是用覆盖操作完成。如对手机应用升级,在该类中添加功能,但又要保留原有功能,此时定义一个子类继承,再在该子类中修改。

    子父类中构造函数特点:
        子类的构造函数中第一行(因为父类中初始化动作要先完成)必须先有一个默认的隐式语句,super()。访问子类构造函数父类参数为空的构造函数也运行了。
        子类实例化(创建对象):子类中所有构造函数都会访问父类参数为空的构造函数。如果父类中没有定义空参数构造函数,那么子类的构造函数必须用super明确要调用父类中哪个构造函数。

    4.继承弊端:打破封装性。
    final关键字:修饰类,方法,变量。修饰的类不允许继承;修饰的方法不可以被覆盖;修饰的变量是一个常量(大写,单词与单词见用下划线),只能赋值一次。
        
    
0 0
原创粉丝点击