java的静态代码块和类变量的隐式覆盖
2023-09-27 14:26:02 时间
静态代码块特点:随着类的加载执行一次,且仅会执行一次
作用:初始化类中的static修饰的变量(static修饰的变量称为类变量。类变量和静态代码块差不多,类变量仅会被初始化一次)
一、静态代码块写法:
static{ }
非静态代码块写法:
{
}
执行顺序:静态代码块->代码块->构造函数
二、那么我们来看一下,如果子类son继承父类people,那么这些代码块执行顺序
public class smile { public static class people{ static { System.out.println("父类静态代码块"); } { System.out.println("父类代码块"); } public people() { System.out.println("父类构造函数"); } } public static class son extends people{ static { System.out.println("子类静态代码块"); } { System.out.println("子类代码块"); } public son() { System.out.println("子类构造函数"); } } public static void main(String[] args) { son a = new son(); } }
结果:
父类静态代码块
子类静态代码块
父类代码块
父类构造函数
子类代码块
子类构造函数
三、如果你不相信静态代码块只会执行一次你可以实例化两个son类
public class smile { public static class people{ static { System.out.println("父类静态代码块"); } { System.out.println("父类代码块"); } public people() { System.out.println("父类构造函数"); } } public static class son extends people{ static { System.out.println("子类静态代码块"); } { System.out.println("子类代码块"); } public son() { System.out.println("子类构造函数"); } } public static void main(String[] args) { son a = new son(); son b = new son(); } } /* * 父类静态代码块 子类静态代码块 父类代码块 父类构造函数 子类代码块 子类构造函数 父类代码块 父类构造函数 子类代码块 子类构造函数 * */
四、类中变量的隐式覆盖:
public class smile { public static class people{ double money; public people(){ money=10.5; } public double get_money() { return money; } } public static class human extends people{ int money; public human(){ money=5; } } public static void main(String[] args) { human a = new human(); System.out.println("现在余额为:"+a.money); System.out.println("现在余额为:"+a.get_money()); } }
你会发现直接通过实例对象a.money访问不到父类的money
相关文章
- Java 静态对象 static
- Java进阶:线程池、局部变量、内部类、静态嵌套类和引用,哦,还有一个坑
- C03-Java同步实践加强班第2周上机任务
- 算法转 Java 后端,斩获腾讯、京东、百度等大厂 offer 面经分享!
- 第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点
- 《21天学通Java(第6版)》—— 第 2 章 Java编程基础
- 【Java实习生】每日10道面试题打卡!
- Java中static静态关键字的使用
- Java面试题收集学习整理1
- Java 设计模式之代理模式,Java 静态代理,Java 动态代理
- java 静态导入(1.5特性,好处是不用写类名)
- 静态构造函数c# 静态块java initallize oc
- android studio 写 java 测试类控制台出现乱码
- Java 静态泛型方法为什么要在返回值之前使用泛型
- Java检查字符串是否包含中文字符
- 【华为OD机试真题 java、python、c++】静态扫描(100%通过+复盘思路)
- Java多线程之静态代理
- 【JAVA】快速排序
- 【JAVA】声名抛出处理异常
- Java实现字符串的匹配
- Java数据结构和算法day01 稀疏数组与队列
- JAVA class 编译jar。 控制台使用jar
- JAVA的静态代理与动态代理比较--转载
- Java多线程-静态代理