JAVA还是初学,查了很多资料,还是不太了解。有说是父类对象的引用,子类实例化时会一起生成一个父类的对象。但是要是父类是抽象类呢,不是不能实例化的吗?可是super.xx()怎么也可以调用抽象父类的普通方法,不是只有实例化的对象才可以调用普通方法的吗?super到底是指什么,然后子类实例化的过程到底怎么样的,希望高手可以帮帮我。
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();
}}
子类重写的方法
父类普通方法
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();
}}
子类重写的方法
父类普通方法
supder.xx()可以直接调用父类的共有方法。
super.method()代表父类中的方法
import java.util.*;
class Person { //父类,里面有Name和Number
String Name;
int Number;
public void Input() //INPUT 方法
{
System.out.println("请输入姓名:");
Scanner sc=new Scanner(System.in);
Name=sc.nextLine();
System.out.println("请输入学号:");
Number=sc.nextInt();
}
public void show() //显示方法
{
System.out.println("姓名:"+Name+"学号:"+Number);
}
class Student extends Person{ //继承PERSON父类
int cid;
double score;
public void input()
{
super.Input(); System.out.println("请输入班级号:");
Scanner sc=new Scanner(System.in);
cid=sc.nextInt();
System.out.println("请输入成绩:");
score=sc.nextDouble();
}
@Override
public void show()
{
super.show(); System.out.println("班级号:"+cid+"成绩:"+score);//最后输出的有姓名,学号,班级,成绩
}
*******************
//super();就是继承父类的方法。
我知道super调用父类的方法,问题是它为什么可以调用,现在的矛盾是实例方法只能是对象才能调用,而抽象类不能实例化为对象
我知道super调用父类的方法,问题是它为什么可以调用,现在的矛盾是实例方法只能是对象才能调用,而抽象类不能实例化为对象
public void say(){System.out.println("子类重写的方法");
super.say();
}
}在类定义里,没有实例化一样可以调用吧,举个例子,如果在Sub类里定义一个speak()方法,一样可以再子类say()里面调用吧,这是在类定义里,没有创建类对象,肯定都没有进行实例化,用super只是说明是超类的say()方法,与正在定义的say()方法区别开。以上是我的理解,不知道对不对
super()调用父类的构造方法
super.method()调用父类的方法