java-static、代码块、继承、笔记

1.static是什么

static是静态的意思,可以用来修饰成员变量、成员方法

static修饰成员变量之后称为静态成员变量(类变量),修饰方法之后称为静态方法(类方法)

static修饰后的成员变量,可以被类的所有对象共享(访问、修改)

同一个类中,静态成员变量、静态方法的访问可以省略类名

2.成员方法的分类

静态成员方法(有static修饰,归属于类),建议用类名访问,也可以用对象访问

实例成员方法(无static修饰,归属于对象),只能用对象触发访问

3.static访问注意事项

静态方法只能访问静态的成员,不可以直接访问实例成员

实例方法可以访问静态的成员,也可以访问实例成员

静态方法中是不可以出现this关键字的

4.工具类是什么

类中都是一些静态方法,每个方法都是以完成一个共用的功能为目的,这个类用来给系统开发人员共同使用的

5.使用工具类的好处

一是调用方便,二是提高了代码复用(一次编写,处处可用)

6.为什么工具类中的方法不用实例方法做?

实例方法需要创建对象调用。 此时用对象只是为了调用方法,这样只会浪费内存。

7.工具类有什么要求

工具类不需要创建对象

建议工具类的构造器私有化处理

8.代码块的概念

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

在Java类下,使用 { } 括起来的代码被称为代码块 。

9.代码块的分类

(1)静态代码块:

格式:static{ }

特点:有static关键字修饰,属于类,与类一起优先加载一次,自动触发执行

使用场景:初始化静态资源

(2)构造代码块/实例代码块(了解,见的少):

格式:{ }

特点:每次创建对象,调用构造器执行时,都会执行该代码块中的代码,并且在构造器执行前执行

使用场景:初始化实例资源。

10.单例模式

可以保证系统中,应用该模式的这个类永远只有一个实例,即一个类永远只能创建一个对象

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

11.饿汉单例模式

概念:在用类获取对象的时候,对象已经提前为你创建好了

实现步骤:(1)定义一个类,把构造器私有化  (2)定义一个静态变量存储对象

public class SingleInstance {

    /**
     2.饿汉单例是在获取对象前,对象已经提前准备好了一个
     */
    public static SingleInstance instance=new SingleInstance();

    //1.必须把构造器私有化
    private SingleInstance(){

    }
}

SingleInstance s=SingleInstance.instance;

12.懒汉单例模式

概念:在真正需要该对象的时候,才去创建一个对象(延迟加载对象)

实现步骤:(1)定义一个类,把构造器私有化    (2)定义一个静态变量存储一个对象(最好私有化)

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

public class SingleInstance2 {

    /**
     * 2.定义一个静态的成员变量负责存储一个对象
     * 只加载一次,只有一份
     * 注意:最好私有化
     */
    private static SingleInstance2 instance;

    /**
     * 3.提供一个方法,对外返回单例对象
     */
    public static SingleInstance2 getInstance(){
        if (instance == null) {
            //第一次来拿对象,此时需要创建对象
            instance = new SingleInstance2();
        }
        return instance;
    }

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

    }
}

SingleInstance2  s=SingleInstance2.getInstance();

13.继承

概念:继承就是java允许我们用extends关键字,让一个类和另一个类建立起一种父子关系

格式:子类 extends 父类

好处:提高代码复用性,减少代码冗余,增强类的功能扩展性

继承后子类特点:子类可以得到父类的属性和行为,子类可以使用, Java中子类更强大

设计规范:子类们相同特征(共性属性,共性方法)放在父类中定义,子类独有的的属性和行为应该定义在子类自己里面

14.继承的特点

(1)子类可以继承父类的属性和行为,但是子类不能继承父类的构造器。

(2)Java是单继承模式:一个类只能继承一个直接父类。

(3)Java不支持多继承、但是支持多层继承。

        多继承会出现二义性,所以java不支持多继承,但java支持多层继承

(4)Java中所有的类都是Object类的子类

15.子类是否可以继承父类的私有成员

有争议

可以,但不能直接访问

16.子类是否可以继承父类的静态成员

有争议

子类可以直接使用父类的静态成员(共享)

但个人认为:子类不能继承父类的静态成员(共享并非继承)

17.继承后,在子类方法中访问成员(成员变量、成员方法)满足:就近原则

先在子类局部范围找

然后在子类成员范围找

然后在父类成员范围找,如果父类范围还没有找到则报错

18.方法重写

概念:子类写一个与父类申明一样的方法覆盖父类的方法

@Override重写注解:放在重写后的方法上,作为重写是否正确的校验注解

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

重写方法的名称、形参列表必须与被重写方法的名称和参数列表一致。

私有方法不能被重写。

子类重写父类方法时,访问权限必须大于或者等于父类 (暂时了解 :缺省 < protected < public)

子类不能重写父类的静态方法,如果重写会报错的。

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

 子类中所有的构造器默认都会先访问父类中无参的构造器,再执行自己。

(为什么?子类初始化之前,一定要调用父类构造器先完成父类数据空间的初始化)

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

20.继承后,子类构造器访问父类有参构造器:

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

如果父类中没有无参数构造器,只有有参构造器,会出现什么现象呢?

会报错。因为子类默认是调用父类无参构造器的。

如何解决? 子类构造器中可以通过书写 super(…),手动调用父类的有参数构造器

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值