你好像有两个问题: 1.如何定义需函数: java中所有方法可以认为都是虚函数,即子类会覆盖(重写)父类的方法.比如: class A{ protected String name = "A"; public void f(){System.out.println("A");}; } class B extends A{ public void f(){ name = "B"; System.out.println("B")}; } A obj = new B(); obj.f();//调用B类的方法.2.关于protected关键字. A a = new A(); String strTemp = a.name;//这不可以访问的. protected在类和子类的内部相当于public,而在类的外部相当于private.所以a.name是不可以被访问的.
一句话,如果你学习过 C++.Java 中所有没有指明 final 的函数都是虚函数. C++ 中的虚函数必须要明确指明.
前两天没上CSDN!看完上面的答复,再有两个问题:1.抽象函数是怎样定义的,不是象接口一样定义吧? 2.对于protected,刚试过,在同一个包里面,无论这个包中的类C是不是extends这个父类,在类C中用 A a = new A();的a也可以访问protected的变量,而不同的包中,就不可以访问,是不是这样的?
1.如何定义需函数:
java中所有方法可以认为都是虚函数,即子类会覆盖(重写)父类的方法.比如:
class A{
protected String name = "A";
public void f(){System.out.println("A");};
}
class B extends A{
public void f(){
name = "B";
System.out.println("B")};
}
A obj = new B();
obj.f();//调用B类的方法.2.关于protected关键字.
A a = new A();
String strTemp = a.name;//这不可以访问的. protected在类和子类的内部相当于public,而在类的外部相当于private.所以a.name是不可以被访问的.
C++ 中的虚函数必须要明确指明.
2.对于protected,刚试过,在同一个包里面,无论这个包中的类C是不是extends这个父类,在类C中用 A a = new A();的a也可以访问protected的变量,而不同的包中,就不可以访问,是不是这样的?