编程题
问答题:
1.Java的访问控制修饰符有哪些?各有什么访问权限?
public,private,protected,默认。
public:修饰类方法变量,对应的访问权限是:全部包的任何类
protected:用protected修饰的类、方法、变量,包内的任何类以及包外继承了该类的子类才能进行访问,重点是:包外继承了该类的子类才可以进行访问,意思市protected修饰的类中的方法和成员变量,只能被子类访问,不论这个子类和父类是否在同一个包中
默认: 如果类、方法、变量没有使用任何访问修饰符,只有包内的任何类可以进行访问
private:用private修饰的类、方法、变量、只有本类中可以访问,包内包外的任何类都不能进行访问的
2.子类对于从父类继承的哪些属性与方法是可见的?
凡是修饰符为public或protected的父类属性成员及方法能被子类所访问;private的属性成员或方法则不能被直接访问。
3.什么是组合?有什么作用?请举例说明。
组合是通过对象内部的属性引用来实现。
例如:fp就将A对象和FighterPlane对象组合起来:A对象和FighterPlane对象虽然在内存当中是两个对象,但是由于A中拥有FighterPlane对象的引用,就可以把A对象看成是由FighterPlane对象组合而成的
public class FighterPlane {
String name;
int missileNum;
void fire() {
if(missileNum > 0) {
System.out.println("now fire a missile!");
missileNum -= 1;
}
else {
System.out.println("No missile left!");
}
}
}
public class RunPlane {
public static void main(String args[]) {
FighterPlane fp = new FighterPlane();
fp.name = "苏35";
fp.missileNum = 6;
fp.fire();
}
}
class A
{
FighterPlane fp;
public A(FighterPlane fpp){
this.fp = fpp; //A对象中拥有了FighterPlane对象的引用
}
public void invoke(){
System.out.println(fp.name);
}
}
4.什么是重载?有什么作用?请举例说明。
在类中定义了多个同名而不同内容参数的成员方法时,称这些方法是重载(overloading)方法。
方法重名表明他们的最终功能和目的相同,但由于在完成同一功能时可能遇到不同的具体情况,所以需要定义含不同具体内容的方法。
class Parent{
public int getscore(){
return 3;
}
public int getscore(int i){
return i;
}
}
5.什么是覆盖?有什么作用?请举例说明。
子类对父类参数相同,返回类型相同的同名方法重新进行定义,这种多态被称为覆盖(overriding).方法覆盖与引用替换相结合,可使抽象类的声明在保证消息发送统一性的前提下,具有消息结果执行上的相异性特点。
public class Main {
public static void main(String[] args) {
new Father().print();
new Son().print();
}
}
class Father{
public void print(){
System.out.println("father");
}
}
class Son extends Father{
public void print() {
System.out.println("SON");
}
}