第九天 重写、多态、静态变量

静态变量是属于类的,不需要方法中定义,只定义一次。先于对象存在
静态方法不需要对象

先静态代码块(在类加载前出现),先执行构造代码块,再是构造方法
静态代码块和静态赋值同等级别,在前面的先执行,后面的后执行

重写

在子类中写和父类相同的方法,只是执行后的语句内容不同

重载

构造方法的重载
方法名相同,但是括号内的内容不同。也是重载
构造方法:类名(){}
类名(变量类型1 变量名1,变量类型2 变量名2){this.变量名 = 变量名}

多态

体现形式:
编译时多态:方法的重载
运行时多态:方法的重写,向上转型
向上转型:用父类来声明对象,用子类来创建对象
格式:父类 对象名 = new 子类();// 一定要是父子类
编译看左边父类中的方法,执行时看子类中的重写的方法,如果子类没有重写则调用父类的方法

为什么子类重写的方法的权限修饰符的范围要大于等于父类对应方法的权限修饰符的范围?
如果小于,编译时声明对象范围是在父类的大类,实际执行时在子类的小类。产生冲突

static

静态变量在方法区中赋予了默认值。静态变量先于对象存在
类只在第一次被使用到的时候才能加载到方法区
类在new对象的时候只加载一次,不重复加载,只有一份
类的加载是加载到方法区的

静态方法

static 修饰的方法称为静态方法。静态方法在类加载的时候加载到方法区,并没有执行,只是存储在方法区。在方法被调用的时候在栈内存中执行。静态方法本身也是先于对象而存在的。可有使用类名来调用方法

访问格式:类名.静态方法()

静态方法中没有this、super,意味着没有对象。静态方法不能直接访问实例成员
静态方法可以被继承
静态方法不可以重写

静态变量默认是类名.静态变量名

对象.方法 的方法是实例方法

何时用?静态方法不需要访问对象的属性或行为,可以设置为静态方法

静态代码块

静态代码块就是用static修饰的{}。在类中方法外编写。属于类
静态代码块在类加载的时候就开始执行,一个类只加载一次执行一次后就不再执行,在方法区中最先执行
格式:static{静态代码块}

构造代码块中的内容会在构造方法执行前都执行
格式{}

先加载父类,再加载子类。无论父类子类,执行构造代码块前都要执行完静态代码块
每一个构造方法执行前都要执行构造代码块中的内容,构造代码块和构造方法如果同时存在则分不开
一个类中有static 要先按上下顺序执行完static在执行剩下所有类中的别的
当在一个类中,执行顺序1.静态代码块2.构造代码块 = 创建包中其他类对象 (同一等级)3.构造方法3.1 创建成员变量4.普通方法

构造方法 格式:类名(一些变量){}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值