目录
1.Java的访问控制修饰符有哪些?各有什么访问权限?
2.子类对于从父类继承的哪些属性与方法是可见的?
3.什么是组合?有什么作用?
4.什么是重载?有什么作用?
5.什么是覆盖?有什么作用?
1.Java的访问控制修饰符有哪些?各有什么访问权限?
1.访问权限首先取决于类前修饰符。若类A要访问类B的方法,前提条件是类A必须具有访问类B的权限。当类B前的修饰符是public时,它可以被所有类访问——即import;当为默认时,则只能被包中的类所访问。
2.在类能被访问的前提下(字母含义见上范围图)
- public - 可被所有类访问
- protected - 在类定义层面上,访问权限为B+C,而在对象层面上,则为B
- 默认 - 访问权限只限于B
- private - 只能被本类内部的方法所访问
2.子类对于从父类继承的哪些属性与方法是可见的?
-
子类继承了父类的所有属性和方法,但只有public、protected的属性和方法在子类是可见的。
子类在继承父类的时候,首先应该满足父类可被访问,例如当子类和父类不在同一个包当中时,父类修饰符必为public;在父类能被访问的前提下,凡是修饰符为public或是protected的父类属性成员或是方法能被子类所访问;private的属性成员或是方法则不能被访问。
3.什么是组合?有什么作用?
- 对象A的引用作为对象B的数据对象,即为组合
- 组合会使对象之间的耦合性较为松散,因为B对象通过引用向A对象发送消息,从而使B和A产生相互关联,这种联系是建立在A的授权基础上的,A对象私有的属性和私有方法B是无法访问的。因此,消息和内部私有方法之间就没有直接的联系,这就为阻断变化在软件系统内的传播提供了可能。
4.什么是重载?有什么作用?
-
在类中定义了多个同名而不同内容参数的成员方法时,称这些方法是重载方法。
-
方法重载的主要好处就是,不用为了对不同的参数类型或参数个数,而写多个函数。多个函数用同一个名字,但参数表,即参数的个数或(和)数据类型可以不同,调用的时候,虽然方法名字相同,但根据参数表可以自动调用对应的函数。这样我们在调用的时候,就不需要记那么多的方法名称,而是知道了方法的功能就可以直接的给他传递不同的参数,编译器会明确的知道我们调用了哪一个方法。重载比if…else要优雅,减少了if…else部分的代码。
重载的最直接作用是方便了程序员可以根据不同的参数个数,顺序,类型,自动匹配方法,减少写过个函数名或方法名的重复步骤。
5.什么是覆盖?有什么作用?
-
子类对父类参数相同、返回类型相同的同名方法重新进行定义,这种多态被称为覆盖
-
当我们开发时,原有的父类—A类功能已经不够强了,我们需要对他进行功能修改,但又不能改动他的代码,因此我们可以用B类继承A类,然后在B类中重写A类的功能方法,达到不修改A类就能改动A类功能的目的。
注意:为什么不能改动父类的代码?
因为实际开发中,原有的代码可能包括很多类,类与类之间可能又有很多关联,所谓牵一发而动全身,所以尽量是不改动原有的代码。