JAVA访问控制符和动态绑定
首先从一道面试题目谈起:
package pkg1;
public class Jupiter
{
void method1(){
System.out.println("In Jupiter");
}
public void call(){
method1();
}
}
package pkg2;
import pkg1.Jupiter;
public class Minerva extends Jupiter{
public void method1(){
System.out.println("In Minerva");
}
public static void main(String[] args) {
new Minerva().call();
}
}
这个程序的运行结果是(请选择):
A 编译错误
B In Jupiter
C In Minerva
D In
Jupiter
In Minerva
运行结果是B.
原因:父类Jupiter中的method1方法的修饰符为default,即friendly,而子类跟父类不在同一个包中,
子类Minerva无法访问到父类的method1方法,故子类不会重写父类的method1函数,
所在地以Minerva().call()将直接调用父类的method1,
如果将父类的method1方法改为public ,则选C。
延伸:
java中public ,protected,private,friendly访问控制权范围:
作用域: 当前类 同一包 子孙类
其他包
public Y Y Y Y
private Y N N N
protected Y Y Y N
firendly Y Y&n
相关文档:
一、创建型模式
FACTORY?人才市场:以往是要哪个人才,就找哪个人才,效率低,现在有了人才市场,我们只需直接去人才市场挑一个好了;
BUILDER?生产流水线:以前是手工业作坊式的人工单个单个的生产零件然后一步一步组装做,好比有了工业革命,现在都由生产流水线代替了。如要造丰田汽车,先制定汽车的构造如 ......
缩放图像的基本原理是创建一个目标大小的画布,然后读取源图像,并将该图像绘制这个画布上。为了使程序通用,源图像和缩放后的目标图像应用分别使用 InputStream和OutputStream来表示,代码如下:
public static void scaleImage(InputStream imgInputStrea ......
本文为原创,如需转载,请注明作者和出处,谢谢!
缩放图像的基本原理是创建一个目标大小的画布,然后读取源图像,并将该图像绘制这个画布上。为了使程序通用,源图像和缩放后的目标图像应用分别使用 InputStream和OutputStream来表示,代码如下:
public stat ......
Java通过java.lang.Thread类完成多线程。我们通过同一个例子,看线程的两种创建方法,以及运行方法:
(1)一种是声明 Thread 的子类,重载 Thread 类的方法 run(Extend java.lang.Thread and override the run method)
public class MyThread extends Thread
{
&nb ......