0
点赞
收藏
分享

微信扫一扫

JavaSE进阶

生态人 2022-01-27 阅读 65

static关键字的作用                                                                

static是静态的意思,可以修饰成员变量,表示该成员变量在内存中只存储一份,可以被共享访问.修改

使用场景:

工具类:对于一些应用程序中多次需要用到的功能,可以将这些功能封装成静态方法,放在一个类中,这个类就是工具类

工具类的作用:一是方便调用,二是提高了代码复用.

工具类的延伸:建议将工具类的构造器私有(private),不让工具类对外产生对象,若产生对象则会浪费内存,所以工具类中的方法我们不用实例方法做,因为实例方法需要创建对象进行调用,此时用对象只为了调用方法,只会浪费内存

代码块概述:

代码块是类的五大部分之一(成员变量,方法,构造器,代码块,内部类),定义在类中方法外

设计模式是一套前人反复使用且多人知.经过分类编目的代码设计经验的总结,后来者可以直接用来解决问题,好的设计模式可以进一步提高代码的复用性  

单例模式为设计模式中的一种:可以保证系统中,应用该模式的这个类永远只有一个实例,即一个类只能创建一个对象(对象即是实例,实例即是对象)

单例的场景:例如任务管理器对象我们只需要一个就可以解决问题了

单例的作用:节省内存空间

单例实现方式有很多,如:

饿汉单例设计模式:在用类获取对象的时候,对象已经提前为你创建好了(提前创建对象则节约了时间,但不知道到底最终需不需要这个对象,则有浪费了内存的隐患)           

       设计步骤:1.定义一个类,把构造器私有.    2.定义一个静态变量存储一个对象

//定义一个单例类
public class SingleInstance1 {
    /**
     * 2.定义一个公开的静态成员变量存储一个类的对象,属于类,与类一起加载一次
     * 饿汉:在这里加载静态变量的时候就会创建对象
     * public static int onLineNumber = 161;
     */
    //这里用public是为了让别人去访问
    public static SingleInstance1 instance = new SingleInstance1();

    /**
     * 1.单例必须把构造器私有起来
     */
    private SingleInstance1() {
    }
}

懒汉单例设计模式:在真正需要该对象的时候,才去创建一个对象(延迟加载对象,则牺牲了时间去节约了内存)

       设计步骤:1.定义一个类,把构造器私有.    2.定义一个静态变量存储一个对象

                       3.提供一个返回单例对象的方法

public class SingleInstance2 {
    /**
        2.创建一个静态成员变量存储本类的对象,注意,:此时不创建对象
     */
    //最好私有!
    private static SingleInstance2 instance ; //null

    /**
        1.私有构造器
     */
    private SingleInstance2(){
    }

    /**
      3.定义一个方法,让其他地方可以来调用获取一个对象
     */
    public static SingleInstance2 getInstance(){
        if(instance == null){
            //第一次来获取对象
            instance = new SingleInstance2();
        }
        return instance;
    }

 面向对象之二是继承,继承是类与类之间的一种关系.多个类继承单独的某个类,多个类就可以使用单独这个类中的属性和行为了.多个类称为子类(派生类),单独的这个类称为父类(基类超类

继承的格式:在Java中,继承的关键字用的是"extends"

Object特点:Java中所有的类,要么直接.要么默认.要么间接继承Object,Object是祖宗类

在子类方法中访问成员(成员变量,成员方法)满足:就近原则

优先顺序:子类局部范围>子类成员范围>父类成员范围,若都没有找到则报错

若子父类中,出现了重名的成员,想在子类中使用父类的成员,可以在子类中定义个中转方法通过super关键字来指定访问父类的成员

方法重写:在继承体系中,子类出现了和父类一模一样的方法声明,我们就称子类这个方法为重写的方法

方法重写的应用场景:1.当子类需要父类的功能,但父类的该功能不完全满足自己的需求时

                                  2.子类可以重写父类中的方法

方法重写的注意事项和要求:

1.重写方法的名称.形参列表必须与被重写方法的名称和参数列表保持一致

2.私有方法不能被重写

3.子类重写父类方法时,访问权限必须大于或等于父类.(缺省<protected<public)

4.子类不能重写父类的静态方法,若重写加上@Override会校验出错误,因为子类不能继承父类的静态方法

子类继承父类后构造器的特点:

子类中所有的构造器默认都会先访问父类中的参构造器,再执行自己的构造器。原因:1子类在初始化的时候,有可能会使用到父类中的数据,如果父类没有完成初始化,父类将无法使用父类的数据.2.子类在初始化之前,一定要调用父类构造器先完成父类数据空间的初始化

子类调用父类构造器的原理:子类构造器的第一行语句默认都是:super(),不写也存在

 super调用父类的有参构造器来初始化继承自父类的数据    

this:代表本类对象的引用; super:代表父类存储空间的标识

   

this(...)和super(...)使用注意点:

子类通过this(...)去调用本类的其他构造器,本类其他构造器会通过super去手动调用父类的构造器,最终还是会调用父类构造器的

注意:this(...) super(...)都只能放在构造器的第一行,所以二者不能共存在同一个构造器中

举报

相关推荐

0 条评论