this和super关键字

this
 那个对象调用,this就代表那个对象
注意细节
    1.this关键字可以用来访问本类的属性、方法、构造器
    2.this用于区分当前类的属性和局部变量
    3.访问成员方法的语法:this.方法名(参数列表)
    4.访问构造器语法:this(参数列表);(只能在构造器中访问另外一个构造器,必须在构造器的第一条语句)
    5.this不能在类定义的外部使用,只能在类定义的方法中使用(例如name和this.name在使用的时候,name会根据就近原则查找,而this.name直接定位属性)

super
 super代表父类的引用,用于访问父类的属性、方法、构造器
注意细节
    1.访问父类的属性,但不能访问父类的private属性  super.属性名
    2.访问父类的方法,但不能访问父类的private方法  super.方法名
    3.访问父类的构造器 super(参数列表)

方法重写
 方法重写就是子类的一个方法和父类的某个方法的名称、返回类型、参数列表一样,那么子类就重写了父类的方法
注意细节(即满足条件)
    1.子类的方法的形参列表、方法名,要和父类的形参列表、方法名完全一样
    2.子类方法的返回类型和父类方法的返回类型一样,或者是父类返回类型的子类
    3.子类方法不能缩小父类方法的访问权限

代码块
注意细节
    1.static代码块也叫静态代码块,作用是对类进行初始化,随着类的加载而执行,且只执行一次,普通代码块,每创建一个对象,就执行
    2.类什么时候被加载
        (1)创建对象实例时(new)
        (2)创建子类对象实例,父类也会被加载
        (3)使用类的静态成员时(静态属性,静态方法)
        (4)main方法执行时
    3.普通代码块,在创建对象实例时,会被隐式的调用,被创建一次就调用一次;如果只是使用类的静态成员时,普通代码块并不会执行
    4.创建一个对象时,在一个类中的调用顺序是:(重难点)
        (1)调用静态代码块和静态属性初始化(优先级一样,按照定义的先后顺序执行)
        (2)调用普通代码块和普通属性初始化(优先级一样,按照定义的先后顺序执行)
        (3)调用构造器 (每个构造器都有默认构造器super()在第一行,然后调用本类普通代码块)
    5.创建一个子类对象时(继承关系),他们的静态代码块、静态属性初始化,普通代码块、普通属性初始化,构造方法的调用顺序如下:
     (1)父类的静态代码块和静态属性(优先级一样,按定义顺序执行)
     (2)子类的静态代码块和静态属性(优先级一样,按定义顺序执行)
     (3)父类的普通代码块和普通属性初始化(优先级一样,按定义顺序执行)
     (4)父类构造方法
     (5)子类的普通代码块和普通属性初始化(优先级一样,按定义顺序执行)
     (6)子类构造方法
    6.静态代码块只能直接调用静态成员(静态属性和静态方法),普通代码块(也可以说普通方法,静态是属于类级别的,普通是属于对象级别)可以调用任意成员
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值