目录
1. Java的访问控制修饰符有哪些?各有什么访问权限?
- public
- public类中的public方法与属性,具有接口访问权限
- 默认类中的public方法与属性,具有包访问权限
- protected
- public类中的protected方法与属性,在类定义层面,访问权限为包中的类和所有子类,在对象层面,访问权限为包中的类
- 默认类中的protected方法与属性,具有包访问权限
- private
只有类内部可以访问与使用
2. 子类对于从父类继承的哪些属性与方法是可见的?
子类对于继承自父类的public方法与属性,protected方法与属性是可见的。
3. 什么是组合?有什么作用?
- 组合是指类的某一对象引用作为另一个类的数据成员
- 通过组合可实现两个类之间的互发消息
编程题9 应用了组合的方法
class Src{
private int value = 0;
private Dis d;
public Src(int value,Dis d) {
if(value >= 0){
this.value = value;
}
this.d = d;
}
public int getValue() {
return value;
}
public void setValue(int value) {
if( value >= 0) {
this.value = value;
System.out.println("Src: value has been set. value = "+this.value);
d.invoke(this);
} else {
System.out.println("Invalid value");
this.value = 0;
}
}
}
class Dis{
public void invoke(Src src) {
System.out.println("Dis: value of src has been set. value = "+src.getValue());
}
}
public class Run {
public static void main(String[] args) {
Dis d = new Dis();
Src s = new Src(1,d);
s.setValue(12);
s.setValue(16);
s.setValue(20);
}
}
4. 什么是重载?有什么作用?
- 重载是指定义了多个同名而不同内容参数的成员方法
- 提供用户更多更合适更人性化的接口来使用
class exa{
public int a;
public int b;
public int c;
public exa(int aa,int bb,int cc){
a = aa;
b = bb;
c = cc;
}
public exa(int aa,int bb){
a = aa;
b = bb;
c = 6;
}
public exa(int aa){
a = aa;
b = 6;
c = 6;
}
//构造函数重载
}
5. 什么是覆盖?有什么作用?
- 覆盖是指子类对父类参数相同,返回类型相同的同名方法的重新定义
- 根据子类特点对父类方法进行特化,进行补充与完善
class A{
int a;
public A(int aa){
a = aa;
}
public void show(){
System.out.println("a = "+aa);
}
}
class B extends A{
int b;
public B(int aa,int bb){
super(aa);
b = bb;
}
public void show(){
super.show();
System.out.println("b = "+b);
}
}