导航:首页 > 编程语言 > javasuper函数

javasuper函数

发布时间:2022-09-26 14:37:30

java中的super和this的用法和作用

super是调用父类的构造函数
使用super调用有一些限制条件,不能在super调用中使用实例变量作为参数.
而且在构造函数中,调用必须写在继承类的构造函数定义的第一行,不能在构造函数的后面使用.
this调用的同类的构造函数.
super的限制条件同样适用于this函数
一个构造函数定义中不能同时包括this调用和super调用,如果想同时包括的话,可以在this中首先进行super调用.

❷ java里面super是干嘛用的

要说super就先要说this。
"this",作为一个特殊的关键字,它的规则如下:
1。可以表示构造函数传递。this(a,b)表示调用另外一个构造函数。这里面的this就是一个特殊语法,不是变量,没有什么类型。
2。可以在一个类的非static成员内部使用,表示当前这个对象。此时,this就是一个final的普通变量,它有静态类型,就是这个类C本身;它有动态类型,就是当前这个对象的类型。你可以对它调用成员函数,把它传递给别的函数,等等等等。只要一个C类型的final变量可以出现的地方,它就可以出现。

"super"。它和"this"类似,但是也有不同的地方。
1。表示调用父类的构造函数。也是一个特殊语法,不是变量,没有什么类型。

2。可以在一个类的非static成员内部使用。比如super.method()。
但是,注意,这个super.method()只是长得跟some_var.method()一样,一个语法糖而已。实质上,"super"根本不是一个变量。

为什么不是?因为如果是就坏了。java里面有一个金科玉律:任何public非static函数的调用都是多态的。
所以,如果super是个变量,也指向当前对象,那么,不管super的静态类型是什么super.method()必然调用的是子类的那个版本,而不会是我们期望的,静态地选择父类的那个版本。

所以,你只要把super.xxx看成一个特殊的语法,比如理解为“super::xxx”就好了。

既然super不是一个变量,那么不能把它象一个普通变量那样"==",或者传递给某个函数就看起来很正常了,是么?何况,你其实也用不着它,有this你这些要求就都可以办到了。

3。super的另外一个作用是调用父类的protected函数。只有通过"super"这个魔咒,我们才能操作父类的protected成员,别无它法。

引用自http://..com/link?url=aZt7ntaph-Db9vXrUSCVI-Yj76kot8YNL831f4lvKms_mJQp8QUDeFo-DeAD-eVG86FmMYs029QyDDp-cb0jbq

❸ java里的super是什么意思

可以理解为父类super() 表示父类的构造方法

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

Java视频教程:

❹ java中的super(s)是什么意思

在java中super表示调用父类(基类)的函数:
如果super()表示调用父类的构造函数,
super.method表示调用父类中的函数(非构造函数)

你这里是调用java.awt.Frame的构造函数。

❺ java中super的用法

super.属性,即可在子类函数中访问到父类的属性.super.方法,可在子类函数中访问到父类的方法(一般用于访问父类被覆盖的方法).
a.f()调用子类的f(),
super.n=n,把子类的n(值为100)赋给父类
ax(写v我觉得会被屏蔽--)=super.f()/n.调父类的f(),即0加到100,5050,再除以100,不就是50.5了吗

❻ java中的super(s)是什么意思

首先你要记住的是this
和super的用法的格式是一样的,super(n),是调用是是父类的构造函数,其中父类的默认构造函数是:super();
而在这里调用的是父类有一个参数的构造方法,将实参n传递传递给父类构造方法。
希望对你有助

❼ JAVA中super的作用

super可作用是向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类。

super也有三种用法:

1、普通的直接引用

与this类似,super相当于是指向当前对象的父类,这样就可以用super.xxx来引用父类的成员。

2、子类中的成员变量或方法与父类中的成员变量或方法同名。

3、引用构造函数

super(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)。

this(参数):调用本类中另一种形式的构造函数(应该为构造函数中的第一条语句)。

(7)javasuper函数扩展阅读

super使用

示例:

class Country {

String name;

void value() {

name = "China";

}

}

class City extends Country {

String name;

void value() {

name = "Shanghai";

super.value(); //调用父类的方法

System.out.println(name);

System.out.println(super.name);

}

public static void main(String[] args) {

City c=new City();

c.value();

}

}

❽ java中的super()是什么

要说super就先要说this。
"this",作为一个特殊的关键字,它的规则如下:
1。可以表示构造函数传递。this(a,b)表示调用另外一个构造函数。这里面的this就是一个特殊语法,不是变量,没有什么类型。
2。可以在一个类的非static成员内部使用,表示当前这个对象。此时,this就是一个final的普通变量,它有静态类型,就是这个类C本身;它有动态类型,就是当前这个对象的类型。你可以对它调用成员函数,把它传递给别的函数,等等等等。只要一个C类型的final变量可以出现的地方,它就可以出现。

"super"。它和"this"类似,但是也有不同的地方。
1。表示调用父类的构造函数。也是一个特殊语法,不是变量,没有什么类型。

2。可以在一个类的非static成员内部使用。比如super.method()。
但是,注意,这个super.method()只是长得跟some_var.method()一样,一个语法糖而已。实质上,"super"根本不是一个变量。

为什么不是?因为如果是就坏了。java里面有一个金科玉律:任何public非static函数的调用都是多态的。
所以,如果super是个变量,也指向当前对象,那么,不管super的静态类型是什么super.method()必然调用的是子类的那个版本,而不会是我们期望的,静态地选择父类的那个版本。

所以,你只要把super.xxx看成一个特殊的语法,比如理解为“super::xxx”就好了。

既然super不是一个变量,那么不能把它象一个普通变量那样"==",或者传递给某个函数就看起来很正常了,是么?何况,你其实也用不着它,有this你这些要求就都可以办到了。

3。super的另外一个作用是调用父类的protected函数。只有通过"super"这个魔咒,我们才能操作父类的protected成员,别无它法。

❾ JAVA中super()的用法

当在子类的构造函数需要调用父类的构造函数时,实用super(),调用,当然super(),里面可以加形参(根据具体的父类的构造函数是否需要形参),这条语句必须写在子类构造函数的第一句

❿ Java中super是什么意思

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

java中,super的几种用法:

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

classBase{
Base(){
System.out.println("Base");
}
}

publicclassChecketextendsBase{
Checket(){
super();//调用父类的构造方法,一定要放在方法的首个语句
System.out.println("Checket");
}

publicstaticvoidmain(Stringargv[]){
Checketc=newChecket();
}
}

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


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

classCountry{
Stringname;

voidvalue(){
name="China";
}
}

classCityextendsCountry{
Stringname;

voidvalue(){
name="Hefei";
super.value();//不调用此方法时,super.name返回的是父类的成员变量的值null
System.out.println(name);
System.out.println(super.name);
}

publicstaticvoidmain(String[]args){
Cityc=newCity();
c.value();
}
}

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


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

classCountry{

Stringname="xianfan";

Stringvalue(Stringname){
name="China";
returnname;
}
}

classCityextendsCountry{
Stringname;

Stringvalue(Stringname){
name="Hefei";
super.value("失败");//不调用此方法时,super.name返回的是父类的成员变量的值null
System.out.println(name);
System.out.println(super.name);
returnname;
}

publicstaticvoidmain(String[]args){
Cityc=newCity();
c.value("成功");
}
}

结果为:Hefei

xianfan

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

3、用super直接传递参数:

classPerson{
publicstaticvoidprt(Strings){
System.out.println(s);
}

Person(){
prt("APerson.");
}

Person(Stringname){
prt("Apersonnameis:"+name);
}
}

{
Chinese(){
super();//调用父类构造函数(1)
prt("Achinese.");//(4)
}

Chinese(Stringname){
super(name);//调用父类具有相同形参的构造函数(2)
prt("hisnameis:"+name);
}

Chinese(Stringname,intage){
this(name);//调用当前具有相同形参的构造函数(3)
prt("hisageis:"+age);
}

publicstaticvoidmain(String[]args){
Chinesecn=newChinese();
cn=newChinese("kevin");
cn=newChinese("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”(因为它是父类中的方法且可被子类访问),它照样可以正确运行。

阅读全文

与javasuper函数相关的资料

热点内容
毛选pdf 浏览:657
linuxexecl函数 浏览:725
程序员异地恋结果 浏览:372
剖切的命令 浏览:226
干什么可以赚钱开我的世界服务器 浏览:288
php备案号 浏览:988
php视频水印 浏览:166
怎么追程序员的女生 浏览:486
空调外压缩机电容 浏览:78
怎么将安卓变成win 浏览:459
手机文件管理在哪儿新建文件夹 浏览:724
加密ts视频怎么合并 浏览:775
php如何写app接口 浏览:804
宇宙的琴弦pdf 浏览:396
js项目提成计算器程序员 浏览:944
pdf光子 浏览:834
自拍软件文件夹名称大全 浏览:328
程序员留学移民 浏览:52
梁中间部位箍筋加密区 浏览:119
频谱分析pdf 浏览:752