java 关键字

java 关键字

1.this

this表示一个对象的引用,它指向正在执行方法的对象. 特别的, 在构造方法中,通过this关键字调用其他构造方法时,必须放在第一行,否则编译器会报错. 且在构造方法中, 只能通过this调用一次其他构造方法.

2.super

super是指向父类的引用,如果构造方法没有显示地调用父类的构造方法,那么编译器会自动为它加上一个默认的super()方法调用。如果父类由没有默认的无参构造方法,编译器就会报错,super()语句必须是构造方法的第一个子句。

定义子类的一个对象时,会先调用子类的构造函数,然后在调用父类的构造函数,如果父类函数足够多的话,会一直调用到最终的父类构造函数,函数调用时会使用栈空间,所以按照入栈的顺序,最先进入的是子类的构造函数,然后才是邻近的父类构造函数,最后再栈顶的是最终的父类构造函数,构造函数执行是则按照从栈顶到栈底的顺序依次执行.
示例如下:

package com.study.keyword;

public class Car {
    
    public  static  void  print(){
        System.out.println("我就想打印一行代码");
    }

    public Car() {
        System.out.println("我是车,我能跑");
    }

    public Car(String  name){
        System.out.println("我是"+ name +"车,我能跑");
    }
    
    public static void run(){
        System.out.println("我正在跑 。。。");
    }


    static {
        System.out.println("我是父类车子的默认属性,我觉得我会被先初始化");
    }
}


package com.study.keyword;

public class Bike extends Car {
    public Bike() {
        System.out.println("我是自行车,我跑的不是很快");
    }

    public Bike(String name) {
        System.out.println("我是"+name+",我跑的不是很快");
    }

    public void  run(){
        System.out.println("我是自行车,我正在跑");
    }

    public static void main(String[] args) {
        //1.期待结果,先输出先初始化父类狗做方法,子类构造方法,子类run() 方法
        Bike bike = new Bike();
        System.out.println("--------------");
        Bike bike1 = new Bike("改自行车");
        bike1.run();
    }
}

输出结果

我是父类车子的默认属性,我觉得我会被先初始化
我是车,我能跑
我是自行车,我跑的不是很快
--------------
我是车,我能跑
我是改自行车,我跑的不是很快
我是自行车,我正在跑

代码解释:(代码运行期)只要执行子类方法 父类的static 静态代码块就会执行,执行子类构造方法的时候会默认调用父类的无参构造方法,再执行自己的构造方法,子类的构造方法中不显示的声明父类构造有参构造方法,new 子类的时候就只会调用父类的无参构造方法

3.assert 关键字

assert 是宏,而非"报错"
assert() 的用法像是一种"契约式编程",表达的意思是,程序在我的假设条件下,能够正常良好的运作,其实就相当与一个if 语句

if(假设成立){
  程序正常运行
}else{
  报错&&终止程序!(避免程序运行引起更大的错误)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值