「这是我参与11月更文挑战的第4天,活动详情查看:2021最后一次更文挑战」。
修饰符
- 各修饰符所代表的可见性?
public: 可被所有使用
protect: 只能被自己和子类使用,或者同一个包路径
private: 只能自己使用,儿子都不行
不加修饰符即default权限: 包访问权限,和他在同一包内的类都可以访问他,包外的则都不能访问
- 外部类可以用private或者protect修饰吗?
A: 不能,只能用public或者包访问权限。 内部类可以。
解释以下final的作用
- final 成员
如果是基本类型,则指值不能被改变。 如果是对象,指对象的引用不可改变,但是引用处的内容可改变。
- final 参数
参数不可变,只能读不能修改,同上
- final方法
方法不能被子类重写。
- final类
该类不能被继承。
- final局部变量可以作为非final的参数传入吗?会编译报错吗?
可以作为非final的参数传入,不会编译报错。
重载和重写
- 重载和重写的区别?
A:重载是方法名相同,参数不同。重写是方法参数等都一致的情况下重写父类的方法。
- 如果子类重载了父类中的方法, 那么子类中还能调用父类中的同名方法吗?
A: 可以(C++中不可以调用父类中的同名重载方法)。
- 怎样能避免子类在重写父类的方法,不小心弄成了重载?
(即你想重写父类的f(int), 却不小心写成了f(int,int),导致调用f(int)时还是调用了父类的f ,怎么能避免这种失误?)
- 父类的成员变量能被重写/覆盖嘛?
A: 输出A。 注意成员变量不具有多态性,因此你定义的是A,赋值的是B, 那么输出的依旧是A里的成员。 如果是被重写的方法的话,那会用B里的方法。
内部类
Q: A中有1个内部类C, A的子类B中也有1个内部类C, B中的C会覆盖A中的C吗?
A: 不会, 因为使用时是通过B.C或者A.C去调用的,存在命名空间的关系。