如果你了解,用this是调用一个类里面的变量或者对象方法。那么super你可以理解为调用多态或者继承类中的构造方法和对象方法。在super调用构造方法时,只能调用带参的构造方法,这也是唯一调用其他类里面的构造方法的显性调用。不带参的父类构造方法可以在执行实例化子类时直接被隐性调用。
例子1:
class cam0
{
double size=10;
void printsize()
{
System.out.println(size);
}
}
class cam1 extends cam0
{
double size=20;
void printsize()
{
System.out.println(size);
System.out.println(super.size);
super.printsize();
}
}
public class cam2
{
public static void main(String args[])
{
cam1 m=new cam1();
m.printsize();
}
}
结果:输出为
20.0
10.0
10.0
super调用m的父类cam0的成员和方法
super可以调用当前对象的父类对象的构造函数
注意: 子类调用父类的构造方法时,super语句必须是子类构造方法的第一句
例子2:
[java] view plain copy
class cam0
{
public cam0(int a,int b)
{
System.out.println("CS");
}
}
class cam1 extends cam0
{
public cam1()
{
super(1,1);
System.out.println("bbb");
}
public cam1(int a)
{
super(1,1);
System.out.println("ccc");
}
}
public class cam2
{
public static void main(String args[])
{
cam1 a=new cam1();
cam1 b=new cam1(1);
}
}
输出为
CS
bbb
CS
ccc
对象a,b分别调用了父类cam0的构造函数
super可以把当前对象的父类对象的引用作为参数传递给其他方法
这个用法和this把当前对象的引用作为参数传递给其他方法相似,这里就不赘述了
本文来自博客园,作者:观心静 ,转载请注明原文链接:https://www.cnblogs.com/guanxinjing/p/9708671.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具