【Java】继承知识点总结

关于继承的问题

  1. 子类和父类方法覆写的原则?
  2. 初始化一个子类实例,父类和子类内部代码的执行顺序?
  3. super和this的区别?
  4. 调用实例方法时命中的是父类还是子类,原则是什么?
  5. 向上转型向下转型

回答

1. 子类和父类方法覆写(override)的原则?
两同两小一大原则:
* 方法名和参数列表相同
* 子类方法返回类型小于父类返回类型
* 子类方法抛出的异常要小于父类抛出的异常
* 子类方法的访问权限要大于父类

2. 初始化一个子类实例,父类和子类内部代码的执行顺序?

  1. 创建子类对象时,子类和父类的静态块和构造方法的执行顺序为:父类静态块->子类静态块->父类构造器->子类构造器。深入理解为什么是这个顺序,可以看我这篇文章:从京东面试题看java类和对象的初始化
  2. 静态变量的声明和赋值,声明会在静态块之前,赋值运算将会合并到静态块中,顺序和源代码中的顺序一致。
    https://www.cnblogs.com/zhuxiaopijingjing/p/12326262.html

3. super和this的区别?

(1)this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。
用法主要有三种:

  1. 普通的直接引用,此时this相当于指向当前对象本身
  2. 形参与成员名重名,使用this区分
public Person(String name, int age) {
    this.name = name; //前面是成员变量,后面的name指形参name
    this.age = age;
}
  1. 引用本类的构造函数
class Person{
    private String name;
    private int age;
    
    public Person() {
    }
    public Person(String name) {
        this.name = name;
    }
    public Person(String name, int age) {
        this(name);
        this.age = age;
    }
}

(2)、super可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类。
super也有三种用法:
1、 普通的直接引用,可以通过在子类中super.xxx来调用父类的方法;
2、子类中的成员变量或方法与父类中的成员变量或方法同名时,用super进行区分
3、引用父类构造函数
注意调用父类中的某一个构造函数时,应该为构造函数中的第一条语句。

4. 调用实例方法时命中的是父类还是子类,原则是什么?

5.向上转型、向下转型

https://www.cnblogs.com/lifexy/p/10812841.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值