问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java super的用法

发布网友 发布时间:2022-04-25 05:46

我来回答

5个回答

热心网友 时间:2022-05-02 00:52

通过用static来定义方法或成员,从某种程度上可以说它类似于C语言中的全局函数和全局变量。
this&super这两个关键字的意义和用法。
在Java中,this通常指当前对象,super则指父类的。想要引用当前对象的某种东西,比如当前对象的某个方法,或当前对象的某个成员,你便可以利用this来实现这个目的,当然,this的另一个用途是调用当前对象的另一个构造函数,这些马上就要讨论。如果你想引用父类的某种东西,则非super莫属。由于this与super有如此相似的一些特性和与生俱来的某种关系,所以我们在这一块儿来讨论,希望能帮助区分和掌握它们两个。
在一般方法中最普遍的情况就是,方法中的某个形参名与当前对象的某个成员有相同的名字,这时为了不至于混淆,需要明确使用this关键字来指明要使用某个成员,使用方法是“this.成员名”,而不带this的那个便是形参。另外,还可以用“this.方法名”来引用当前对象的某个方法,但这时this就不是必须的了,可以直接用方法名来访问那个方法,编译器会知道要调用的是那一个。下面的代码演示了上面的用法:
public class DemoThis{
private String name;
private int age;
DemoThis(String name,int age){
setName(name);
//你可以加上this来调用方法,像这样:this.setName(name);但这并不是必须的
setAge(age);
this.print(); }
public void setName(String name){
this.name=name;//此处必须指明你要引用成员变量
}
public void etAge(int age){
this.age=age;
}
public void print(){
System.out.println("Name="+name+" ge="+age);
//在此行中并不需要用this,因为没有会导致混淆的东西
}
public static void main(String[] args){
DemoThis dt=new DemoThis("Kevin","22");
这段代码很简单,不用解释你也应该能看明白。在构造函数中你看到用this.print(),你完全可以用print()来代替它,两者效果一样。下面我们修改这个程序,来演示super的用法。
class Person{
public int c;
private String name;
private int age;
protected void setName(String name){
this.name=name;
}
protected void setAge(int age){
this.age=age;
}
protected void print(){
System.out.println("Name="+name+" Age="+age);
}
}
public class DemoSuper extends Person{
public void print(){
System.out.println("DemoSuper:");
super.print();
}
public static void main(String[] args){
DemoSuper ds=new DemoSuper();
ds.setName("kevin");
ds.setAge(22);
ds.print();
}
}
在DemoSuper中,重新定义的print方法覆写了父类的print方法,它首先做一些自己的事情,然后调用父类的那个被覆写了的方法。输出结果说明了这一点:
DemoSuper:
Name=kevin Age=22
这样的使用方法是比较常用的。另外如果父类的成员可以被子类访问,那可以像使用this一样使用它,用“super.父类中的成员名”的方式,但常常并不是这样来访问父类中的成员名的。
在构造函数中构造函数是一种特殊的方法,在对象初始化的时候自动调用。在构造函数中,this和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); }}
 
在这段程序中,this和super不再是像以前那样用“.”连接一个方法或成员,而是直接在其后跟 上适当的参数,因此它的意义也就有了变化。super后加参数的是用来调用父类中具有相同形式的构造函数,如1和2处。this后加参数则调用的是当前具有相同参数的构造函数,如3处。当然,在Chinese的各个重载构造函数中,this和super在一般方法中的各种用法也仍可使用,比如4处,可以将它替换为“this.prt”(因为它继承了父类中的那个方法)或者是“super.prt”(因为它 是父类中的方法且可被子类访问),它照样可以正确运行。

热心网友 时间:2022-05-02 02:10

super具体的说就是父类的对象,既然是父类的对象一般情况下自然可以想对象一样使用,
比如直接调用匪类的一些方法变量等(如:super.math();再如super.variable;)
而放在构造方法中的第一句调用父类的构造方法:如下:
chass Father
{
public Father()
{
}
}

chass Son extends Father
{
public Son()
{
super();//这里就是调用了父类的无参数的构造方法。它必须放在子类的构造方法的有效代码的
//第一句(重点1,放在子类的构造方法中。重点2,必须是有效代码的第一句)
System.Out.Println("第一句是掉用父类的方法,下面的就是子类的初始化了");
}
}
补充:如果要调用父类的含参数的构造方法,则子类的super();括号中就要传入相应的参数

当然还有其他的一些用法。单单一个super当时我给学生讲课的时候就是讲了2节课的,这里也不可能完全戏讲了。有不懂的再问吧。追问有效和无效代码举个最简单的例子和我说下好吗~~

追答有效代码就是我们平时写的以“;”符合结尾的代码。记住:一句话可以来上几个回车(不出错的情况下)但是这仍然是一句话,如:System.Out.Println("完整的一句话");这里一行写下了,它是一句话。同样如下:
System.
Out.
Println("完整的一句话");这里你分成了三行写了,它同样是一句话。
有效代码就是指这里的“一句话”
无效代码有注释、空行、以及“一句话”被分成了N行(只算一句有效代码)

额。。。理解了吗?

热心网友 时间:2022-05-02 03:45

简单说,super();方法必须放在子类构造函数中的第一行才可以,放在首行是针对构造函数说的,

热心网友 时间:2022-05-02 05:36

“调用父类中构造方法时,放在程序首行;这个程序首行具体是怎么指。举例子最好”
放在程序首行指的是放在子类构造方法的第一行,这是Java的语法规则

热心网友 时间:2022-05-02 07:44

class A
{
public A()
{

}
}
class B extends A
{
public B()
{
super();
}
}
放在子类构造方法第一行追问帮忙解释下补充吧~~~

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
器世间的意思是什么 学吉他大概学费是多少 电吉他培训一般学费多少 天津吉他培训成人班费用多少 吉他培训班一般的学费多少钱 电脑怎么保存下载的视频文件怎么把视频保存到电脑上 双子座男生如果受到伤害死心了'是不是无论怎么做都无法挽回了。 和平精英微信怎么切换账号 更新之后换号方法 有关说说搞笑幽默句子的短句(寻找搞笑幽默的快乐) 说说你多大了,看看能不能做我干闺女怎么回复? 我是一名苏州一所学校的大专学生 想考教师证 要怎么才能考呢 要出去培训么 有什么好的地方么 大概多少钱 苏州园区附近有什么比较好的教师资格证培训机构吗? JAVA中的super() JAVA中super的作用? 苏州园区这边教师资*哪里培训的好?有经验的朋友可以帮忙推荐一下? java中this和super关键字到底是啥意思?求深刻讲解 请问苏州哪里有正规一点专业一点培训教师资格证的啊?一定要正规的哦! java this关键字和super关键字的区别? java 编程 this 和 super 关键字怎么理解比较好? 五行缺金火的女孩是不是将来没有钱财啊? Java中的super 苏州教师资格证有培训的吗? java 中this和super关键词怎么用 苏州教师证培训学院哪家好 Java中的super关键词,说白了就等同于“调用父类构造方法”? java中this和super关键字代表什么?以及它们的三种作用 java构造方法中super()的作用是什么? JAVA中的super代表什么意思?? Java里面super关键字是在子类对象内部指代其父类对象的引用吗? java中super关键字是干嘛的 小学的教师证好考么 苏州东奥培训的怎么样? 请问苏州有哪些对外汉语教师的培训班?我只知道一个思诺,还有别的么?哪个比较好比较专业? 怎么把头发做成白色? 怎么做可以让皮肤变白呢? 华为nova2怎么系统更新 为什么我的华为nova手机突然不让我在应用内自己更新需要在应用商店下载? 华为Nova怎么升级最新版本5.0的,求解 童年的期盼的作者和出处 快3软件怎么更新——nova连不上华为手机助手是什么鬼 oppo手机一键清理的时候,怎么让某个软件不被关闭? 安卓系统怎么从7.0升级到8.0,手机是华为Nova青春版 华为nova7需不需要经常进行软件更新,因为手机每次都会自动提醒你去更新? 华为nova5ipor自带钱包软件怎样升级? 华为nova什么时候更新 华为手机nova7se系统升级为10.1.1.166好用吗 为什么华为同一型号同一版本的手机却只有一部进行了软件更新同时也更新了补丁? 眼镜架歪了怎么办? 怎样保护眼镜,要是歪了怎样才调得正? 眼镜歪了自己怎么修? 刚配的眼镜戴上的感觉好像歪了,应该怎么办?