super的使用方法与使用范围
如果你了解,用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把当前对象的引用作为参数传递给其他方法相似,这里就不赘述了
super的使用方法与使用范围的更多相关文章
- python中super的使用方法
说白了,super的使用就是要子类要调用父类的方法,我们就用super,那你要有调用的规范,我们明白这个规范就可以了. 在python2和python3中,调用方法不同,注意就是了.Python3.x ...
- Python中super()和__init__()方法
采用新式类,要求最顶层的父类一定要继承于object,这样就可以利用super()函数来调用父类的init()等函数, 每个父类都执行且执行一次,并不会出现重复调用的情况.而且在子类的实现中,不用到处 ...
- super.getClass()方法调用
下面程序的输出结果是多少?import java.util.Date;public class Test extends Date{public static void main(String[] a ...
- super.getClass()方法
下面程序的输出结果是多少? importjava.util.Date; public class Test extends Date{ public static void main(String[] ...
- 【Java面试题】14 super.getClass()方法调用
下面程序的输出结果是多少? import java.util.Date; public class Test extends Date{ public static void main(String[ ...
- es6 class 中 constructor 方法 和 super
首先,ES6 的 class 属于一种“语法糖”,所以只是写法更加优雅,更加像面对对象的编程,其思想和 ES5 是一致的. <1>constructor function Point(x, ...
- ES6之class 中 constructor 方法 和 super 的作用
首先,ES6 的 class 属于一种“语法糖”,所以只是写法更加优雅,更加像面对对象的编程,其思想和 ES5 是一致的. function Point(x, y) { this.x = x; thi ...
- Java中super的几种使用方法并与this的差别
1. 子类的构造函数假设要引用super的话,必须把super放在函数的首位. class Base { Base() { System.out.println("Base" ...
- 子类中执行父类的方法(引出super()与mro列表)
1. 我们先想一下在python中如果子类方法中想执行父类的方法,有什么方式?大概有三种: Parent.__init__(self, name) # 通过父类的名字,指定调用父类的方法 super( ...
随机推荐
- mybatis 使用oracle merge into 语句踩坑实录
由于需求涉及oracle的clob类型字段,在mybatis的mapper xml文件中编写merge into语句时总是失败. 附上错误代码 <insert id="mergeInt ...
- 【java】数据类型
逻辑型boolean: boolean类型数据只能取值True或False,不可以0或者非0替代True或False,这点与c语言不同. 字符型char: 一个char类型的字符占两个字节.一个汉字也 ...
- SDRAM的初始化与刷新操作---看时序图写代码
SDRAM的初始化与刷新操作---看时序图写代码 1.SDRAM的常见操作 2.初始化就是配置SDRAM 3.SDRAM初始化时序 时序解释如下: 4.刷新操作
- linux环境下python的pdb调试方法
一些常用指令: h(elp) [comman] #打印可用指令及帮助信息 r(eturn) #运行代码直到下一个断点或当前函数返回 b(reak) [[filename:]lineno | fun ...
- C/S,B/S的应用区别
C/S,B/S的应用区别 C/S即大家熟知的客服机和服务器结构通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销 B/S结构即浏览器和服务 ...
- laravel5.5 excel的安装和使用
在项目开发中 最常用的就是把数据导出成excel的文件报表了 然而新下的项目中啥也没有;没有excel的扩展 会报这个错误 然后你需要通过composer安装这个依赖 学习源头:https://www ...
- ALGO-22_蓝桥杯_算法训练_数的划分(DP)
问题描述 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序). 例如:n=,k=,下面三种分法被认为是相同的. ,,; ,,; ,,; 问有多少种不同的分法. 输入格式 n,k 输出格式 ...
- elasticsearch mapping demo
curl -XPUT localhost:9200/local -d '{ "settings" : { "analysis" : { "analyz ...
- Javascript中的对象(八)
一.如何编写可以计算的对象的属性名 我们都知道对象的属性访问分两种,键访问(["属性名"])和属性访问(.属性名,遵循标识符的命名规范) 对于动态属性名可以这样 var prefi ...
- Unable to load native-hadoop library for your platform... using builtin-java classes where applicable(四十四)
问题描述: Unable to load native-hadoop library for your platform... using builtin-java classes where app ...