JAVA类知识

「这是我参与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去调用的,存在命名空间的关系。

Guess you like

Origin juejin.im/post/7031439220149321764