day8-6(一)

一. this和super static

this:
    代表子类本身对象.当将局部变量赋值给成员变量,且为非static的即可以用对象进行访问.
    this()代表当前类中的其他构造方法,专用于构造方法调用构造方法,当显示任何一个构造方法时,默认的无参构造就被覆盖了,若缺少属性,就使用数据类型默认值来代替,如果需要此属性,就用get/set方法补充数值
super:
    代表父类。super()代表父类中的构造方法
    调用父类构造方法必须放在第一行.
注:
    1.当子类继承父类时,父类中的显示构造也必须提供对应的构造,子类至少提供一个。
    2.在任何一个构造方法中super()和this()不能共存(**why?**)
    A继承了B,在构造A时要调用A的构造方法,所有构造方法中第一行默认都是super()/super(参数),会先构造父类,如果没有直接父类,则构造Object
    在任何一个类中,静态是优先于对象属性和方法被加载到内存中,再普通域,再执行构造方法
    由于this也会调用super,这样无形之中调用两次父类,由于Java是单继承,所以不能共存
**this对象哪来的??**

二 static 和final

**static**:
    static是静态的,也成称为类的
    static的属性叫做类属性,方法叫做类方法
    全局的:如果存在多对象,无论哪一个对象对类作出改变其他对象都会受到影响
**final**:
    final代表最终,不可改变
    可以修饰
    类:
        抽象类和接口是不可以被修饰的,因为无论还是抽象还是接口都是为了让别人来继承或者实现的,而final不可以被继承和实现
        如:String类是不能被继承
    属性:
        基本数据类型:值不可以改变
        引用数据类型:
        final String str=new String();
        指str不能指向一个新的对象,因为str中保存的是堆中对象的地址,即str的值就是一个地址,无法改变.即地址不可以改变
    方法: 
        不可以被重写,可以被重写和重载

三. 重写和重载

重载(overload):静态多态
    指在同一类中方法同名参数的体现形式
    1.参数的个数不同
    2.参数的类型不同
    3.在类型不同,个数相同的情况下,哪怕是改变一下顺序,也认为是重载如:
        public void A(double a,int b){}
        public void A(int b,double a){}
重写(overwrite):动态多态.可以体现为同一种行为,不同的体现方式
    子类重写父类方法
    可以改变的有:
    1.访问修饰符:子类可以修改,但是修改后不可以小于父类的范围
    2.返回值类型:不可改变
    拓展:void可以有返回值,只能是return
    3.方法名称:不可以改变
    4.方法参数:不可以改变
    5.方法体:可以修改

四.单例模式

详细参考文献[JAVA设计模式之单例模式 ](http://blog.csdn.net/jason0539/article/details/23297037)
思考:
1.单例模式有懒汉和饿汉2种写法,有什么区别各怎么写
练习:
1.基于单例模式,要求对象只能被实例化3次,改怎么写
public class Test {
    public static void main(String[] args) {
        SingleLenton singleLenton1=SingleLenton.getInstence();
        SingleLenton singleLenton2=SingleLenton.getInstence();
        System.out.println(singleLenton1==singleLenton2);//返回true
    }
}
/**
 * 单例模式:
 *      只产生一个实例.
 *      针对工具类等需要频繁加载到内存时可以考虑使用单例模式
 * 思考过程:
 *      1.什么能产生对象
 *          new+构造方法(一般使用此方式)
 *          克隆  args.clone()
 *          反射  根据类名来产生对象
 *      2.怎么限制
 *          new 是关键字,无法改变,能改变的只有构造方法
 *          A a=new A();A()是构造方法,可以限制访问
 * Created by HowellZhang on 2016/8/6.
 *      3.自行实例化对象
 *      4.封装一个方法,吧对象传送到外面
 */
public class SingleLenton {//这是饿汉模式
    /**
     * 用private限制访问,即只有本类可以访问
     */
    private SingleLenton(){}
    private static SingleLenton single=new SingleLenton();//自行实例化对象

    public static SingleLenton getInstence(){//没有对象,所以方法要改为类方法
        return single;//因为static只能访问static,所以成员变量也需static
    }

}
public class SingleLenton {//懒汉模式

    private SingleLenton(){}
    private static SingleLenton single=null;

    public static SingleLenton getInstence(){
        if (single==null)
            single=new SingleLenton();
        return single;
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值