首页 热点专区 义务教育 高等教育 出国留学 考研考公

Java中的super

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

我来回答

4个回答

热心网友 时间:2023-10-31 08:52

最好把super和this放在一起,对比着理解。
super指向父类,用于引用父类的构造方法。
this指向本类,用于引用本类中的其他方法。
这么说太抽象,下边是一个很经典的例子,完全体现了super和this的用法和区别,请花几分钟把它读完:
class Person {
public static void prt(String s) {
System.out.println(s);
}

Person() {
prt("A Person.");
}//构造方法(1)

Person(String name) {
prt("A person name is:" + name);
}//构造方法(2)
}

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

下边总结一下super和this的异同:
1)super(参数):调用父类的构造方法 。
2)this(参数):调用本类的其他构造方法。
3)都必须放在构造方法的第一行。
3)super:引用父类中的成员,当子类和父类中的方法重名时,这样用。
4)this:代表当前对象名(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名)。
5)this()和super()都指的是对象,所以,均不能在static环境中使用。包括:static变量,static方法,static语句块。
6)从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。

希望对你有帮助:-)

热心网友 时间:2023-10-31 08:52

this和super的区别
No.
区别
this
super

1
操作属性
this.属性:表示调用本类中的属性,如果本类中的属性不存在,则从父类查找
super.属性:表示调用父类中的属性

2
操作方法
this.方法():表示调用本类中的方法,如果本类中的方法不存在,则从父类查找
super.方法():表示调用父类中的方法

3
调用构造
this()调用本类中的其他构造方法
super():由子类调用父类中的构造方法

4
查找范围
先从子类中查找,如果没有从父类中查找
不查子类直接查找父类

5
特殊
当前对象
-

既然this和super都可以调用构造,那么这两者绝对不能同时出现,因为只要是调用构造,就必须将语句放在构造方法的首行,而且以后开发的时候建议明确的写出“this.方法”或者“super.方法()”,这样便于代码的维护。

class A {

public void print(){

System.out.println("A、Hello World .") ;

}

}

class B extends A {

public void print(){ // 覆写

super.print() ;

System.out.println("B、Hello World .") ;

}

}

public class Test {

public static void main(String args[]) {

new B().print() ;

}

}

参考资料:http://blog.sina.com.cn/s/blog_8df07b6f0100u0cz.html

热心网友 时间:2023-10-31 08:53

super是应用父类对象,例如在方法中调用super.method(),super()是直接调用父类的构造函数。

热心网友 时间:2023-10-31 08:53

个人理解和jimaren相同

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com