JAVA还是初学,查了很多资料,还是不太了解。有说是父类对象的引用,子类实例化时会一起生成一个父类的对象。但是要是父类是抽象类呢,不是不能实例化的吗?可是super.xx()怎么也可以调用抽象父类的普通方法,不是只有实例化的对象才可以调用普通方法的吗?super到底是指什么,然后子类实例化的过程到底怎么样的,希望高手可以帮帮我。
[code="java"]
abstract class Base{
public void say(){
System.out.println("父类普通方法");
}
}
class Sub extends Base{
public void say(){
System.out.println("子类重写的方法");
super.say();
}
}
public class HelloWorld {
public static void main(String[] args) {
Base sub = new Sub();
sub.say();
}
}
[/code]
子类重写的方法
父类普通方法
很简单地,this和super有很大的相似点:
它们都只能在一个类的[color=red]实例方法[/color]中出现,实际上是方法的一个[color=red]隐藏的参数[/color]
不同的是,this表示这个方法所在的实例,而super代表的是这个方法类的父类的实例
java是一种动态绑定语言,
Base sub = new Sub();
sub.say();
sub指向是哪个子类,就调用哪个子类的方法,现在指向是Sub类
故调用是Sub类的say()方法
而super指向是父类对象,故super.say()调用是父类的say()方法
希望你有时间,好好看看
[url]
http://mougaidong-163-com.iteye.com/blog/994934
[/url]
[url]http://mougaidong-163-com.iteye.com/blog/994934 [/url]