面向对象:static、final、abstract

面向对象:static、final、abstract

1、static(静态)
1.概念
关键字—修饰符 ,修饰 成员变量、方法、构造代码块以及类。

2.修饰变量—静态变量(属性)
static修饰的成员变量也叫类变量,随着类的加载(方法区的静态常量池)而加载方法区的静态区,会赋予系统默认初始值,可以用类名点的形式调用也可以通过对象调用,所有的对象都是在共享这个静态变量。
在这里插入图片描述注意:
类只加载一次。
在类加载的过程中信息自动存入方法区。
构造方法中可以定义静态变量?不可以,构造方法是对象级别且被调用才执行,静态变量与类同级。

3.修饰方法—静态方法
随着类的加载(方法区静态常量池)而加载到静态区,存储是存储在静态区,当方法被调用的时候被加载到栈中执行(所有的方法和语句都是在栈中执行),可以被类名调用也可以被对象调用。

注意:
静态方法中可以定义静态变量?不可以,方法被调用才执行
静态方法中可以使用this/super?不可以,this和super都是对象级别,静态方法是类级别
main方法可以直接调用非静态方法?不行,静态内容不能直接调用非静态内容,非静态内容可以直接调用静态内容
静态方法可以重载?可以
静态方法可以重写?不可以,java规定了父子类中只能出现都是static的方法但是不是重写,要么都不是static的方法就可以重写

4.修饰代码块—静态代码块(修饰的构造代码块)
在方法外类内static{},随着类的加载而只加载一次,用于属性初始化以及程序启动默认需要加载的东西。
执行顺序:静态—>对象 父类静态—子类静态—父类对象—子类对象

注意:
静态修饰的内容随着类的加载而加载(只加载一次)

二、final(最终)
1.概念
关键字—修饰符 ,修饰 数据、方法、类

2.修饰数据—最终值
修饰基本数据类型的变量的值不能发生改变
修饰引用数据类型的变量的地址值不能发生改变。但是元素的值可以改变
final修饰的成员变量要在创建对象之前进行赋值,静态常量要在类加载完成之前进行初始化

3.修饰方法—最终方法
最终方法可以重载?支持重载
最终方法可以重写?不支持重写

4.修饰类—最终类
不能被继承,可以继承别的类
类里的方法可以被重写?不可以

三、abstract(抽象)
1.概念
如果所有的子类对父类某个方法都进行了不同程度的重写,那么此时认为这个方法的方法体就没有了实际意义,把方法体去掉用abstract修饰就变成了抽象方法;如果一个类中有抽象方法,那么此时这个类就要变成抽象类。
关键字—修饰符 ,修饰 方法、类

2.注意:
如果一个普通类继承了抽象类就要重写所有的抽象方法;如果不想重写所有,就要变成抽象类
抽象类一定有抽象方法?不一定
抽象类能否创建对象?不可以 抽象类的构造方法是在底层由其他语言(比如C语言)进行创建的,使用不了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值