super在java中是什么意思(java中的super是调用什么函数)

http://www.itjxue.com  2023-03-04 01:38  来源:未知  点击次数: 

java中Super是什么意思?

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

super是引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super.变量名 super.成员函数据名。

JAVA中的super代表什么意思??

super();表示调用父类的构造方法,只是调用方法,不构造对象。 super.fun();表示调用父类的某方法 在继承的时候这个方法是肯定被继承下来的。如果fun()这个方法在子类没有重写,那么super.fun();实际上跟直接调用fun();是一样的。 如果被重写了,那么super.fun();就是重写前的,fun();就是重写后的。

Java中super是什么意思?

super在java的子类中指代父类引用

java中,super的几种用法:

1、子类的构造函数如果要引用super的话,必须把super放在函数的首位

class?Base?{

????Base()?{

????????System.out.println("Base");

????}

}

public?class?Checket?extends?Base?{

????Checket()?{

????????super();//调用父类的构造方法,一定要放在方法的首个语句

????????System.out.println("Checket");

????}

?

????public?static?void?main(String?argv[])?{

????????Checket?c?=?new?Checket();

????}

}

如果想用super继承父类构造的方法,但是没有放在第一行的话,那么在super之前的语句,肯定是为了满足自己想要完成某些行为的语句,但是又用了super继承父类的构造方法。那么以前所做的修改就都回到以前了,就是说又成了父类的构造方法了。

2、在Java中,有时还会遇到子类中的成员变量或方法与超类(有时也称父类)中的成员变量或方法同名。因为子类中的成员变量或方法名优先级高,所以子类中的同名成员变量或方法就隐藏了超类的成员变量或方法,但是我们如果想要使用超类中的这个成员变量或方法,就需要用到super.

class?Country?{

????String?name;

?

????void?value()?{

????????name?=?"China";

????}

}

?

class?City?extends?Country?{

????String?name;

?

????void?value()?{

????????name?=?"Hefei";

????????super.value();//不调用此方法时,super.name返回的是父类的成员变量的值null

????????System.out.println(name);

????????System.out.println(super.name);

????}

?

????public?static?void?main(String[]?args)?{

????????City?c=new?City();

????????c.value();

????}

}

为了在子类中引用父类中的成员变量name和方法value(),在代码中使用了super、super.name和super.value(),若不调用super.value()时,super.name返回父类成员变量默认值null,调用此方法时,super.value()方法把成员变量name赋值为China,再利用super.name调用父类的成员变量的值。

另外,要注意的是super.name调用的是成员变量的

class?Country?{

????String?name="xianfan";

?

????String?value(String?name)?{

????????name?=?"China";

????????return?name;

????}

}

?

class?City?extends?Country?{

????String?name;

?

????String?value(String?name)?{

????????name?=?"Hefei";

????????super.value("失败");//不调用此方法时,super.name返回的是父类的成员变量的值null

????????System.out.println(name);

????????System.out.println(super.name);

????????return?name;

????}

?

????public?static?void?main(String[]?args)?{

????????City?c=new?City();

????????c.value("成功");

????}

}

结果为:Hefei

xianfan

此时,super.name返回的值是父类成员变量的值xianfan,而此时的super.value()方法是不起作用的。

3、用super直接传递参数:

class?Person?{

????public?static?void?prt(String?s)?{

????????System.out.println(s);

????}

?

????Person()?{

????????prt("A?Person.");

????}

?

????Person(String?name)?{

????????prt("A?person?name?is:"?+?name);

????}

}

?

public?class?Chinese?extends?Person?{

????Chinese()?{

????????super();?//?调用父类构造函数(1)

????????prt("A?chinese.");//?(4)

????}

?

????Chinese(String?name)?{

????????super(name);//?调用父类具有相同形参的构造函数(2)

????????prt("his?name?is:"?+?name);

????}

?

????Chinese(String?name,?int?age)?{

????????this(name);//?调用当前具有相同形参的构造函数(3)

????????prt("his?age?is:"?+?age);

????}

?

????public?static?void?main(String[]?args)?{

????????Chinese?cn?=?new?Chinese();

????????cn?=?new?Chinese("kevin");

????????cn?=?new?Chinese("kevin",?22);

????}

}

结果为:A Person.

A chinese.

A person name is:kevin

his name is:kevin

A person name is:kevin

his name is:kevin

his age is:22

在这段程序中,this和super不再是像以前那样用“.”连接一个方法或成员,而是直接在其后跟上适当的参数,因此它的意义也就有了变化。super后加参数的是用来调用父类中具有相同形式的构造函数,如1和2处。this后加参数则调用的是当前具有相同参数的构造函数,如3处。当然,在Chinese的各个重载构造函数中,this和super在一般方法中的各种用法也仍可使用,比如4处,你可以将它替换为“this.prt”(因为它继承了父类中的那个方法)或者是“super.prt”(因为它是父类中的方法且可被子类访问),它照样可以正确运行。

JAVA中,super是做什么用的??,用法什么的详细说说!

你可以把他看成可以用的对象

继承知道吧

super就是子类调用父类的方法属性时候用的

比如一个子类B想想写父类A的方法,但是它只想改一点东西就好了,也就是说它还需要用到父类的方法

(举个例子父类的方法是吃苹果,子类想重写方法为吃苹果+吃香蕉,那么我们只要先调用父类的吃苹果方法,然后再加自己的吃香蕉逻辑就可以了,这样的好处就是不需要重新在方法里设计自己的方法了,一句话,)

super一般还在子类的构造方法中使用,因为子类的构造必须先要引出父类的构造(没老爸,哪来的你),而且super必须写在构造方法中第一行,这是规定

(责任编辑:IT教学网)

更多

推荐时间特效文章