[Java、Android面试]_07_继承与多态、重写与重载
本人今年参加了很多面试,也有幸拿到了一些大厂的offer,整理了众多面试资料,后续还会分享众多面试资料。
整理成了面试系列,由于时间有限,每天整理一点,后续会陆续分享出来,感兴趣的朋友可关注+收藏
文章目录
- 1. 继承
- 2. 多态
- 3. 重写和重载
- 3.1 重写
- 3.2 重载
1. 继承
继承是一种面向对象编程的机制,允许一个类(子类/派生类)继承另一个类(父类/基类)的属性和方法。子类可以重用父类的代码,还可以通过添加新的属性和方法来扩展功能。继承建立了类之间的层次关系。
一方面为了共用父类中的成员,简化开发,可以直接拥有父类的成员
二方面为了扩展程序,继承的子类中除了父类的成员,还可以有自己的成员
继承一定要符合is-a的关系
哪些东西是子类所不能继承的
· 构造方法不能被继承
· 私有的成员可以不可以
从现实中来看,私有成员可以被继承的。能继承不代表可以直接访问父类的属性,也不代表不能间接的访问父类的属性
从代码来看,子类继承父类之后,父类中所有的属性子类都具有了
从现实中来看,私有的属性有些子类不能继承。
Oracle官方的说法是不能被继承。私有代表只能自己操作。其他人根本摸不到,但是可以间接的访问
· 静态的成员:在类中是可以被继承的。在接口中不能被继承。
2. 多态
多态是面向对象编程的一种特性,允许不同的子类对象以统一的方式进行访问和操作。多态通过方法的重写(覆盖)和方法的动态绑定来实现,使得不同子类对象可以对相同的方法调用表现出不同的行为。
如:人class, 可以有:man Class 和woman Class
3. 重写和重载
3.1 重写
· 子类继承了父类,子类拥有了和父类一样的属性和行为,但是,子类不满足于父类的
行为,需要重写
· 方法的重写一般是发生在继承中的。
· 方法签名不能变。返回值类型可以协变(子类的返回值类型只能是父类的返回值类型
的子类)
· 真正改变的只是方法体
· @Override:注解,检查这个方法是否符合重写的规则,如果符合,什么都不会显示,
一旦写错,它就有提示
· 访问修饰符没有要求,但是不能比父类的小。父类私有的方法,不能重写。
· 父类静态方法。子类只能继承,不能重写,如果存在方法签名与父类相同的静态方法,
实际是子类自己的
3.2 重载
重载是指在一个类中定义多个同名但参数列表不同的方法。重载允许同一个方法名实现不同的功能,方法参数的类型、个数或顺序必须不同。重载不涉及继承关系,只与方法的签名有关。