super

258 阅读2分钟

super存在于实例方法和构造方法中.不能存在于静态方法中.

在方法中,如果第一行没有this();也没有super();那么默认是有一个super();指向当前类的父类,最高级的父类是Object类,采用父类中无参的构造方法,所以在写类的时候,最好手动添加无参的构造方法,因为如果不手动添加,而写了有参的构造方法,那么默认是不提供无参的构造方法,那么到了super();这一步就会出错.

super的用法: super.属性名 ---->指向父类的属性

super.方法名() ----->指向父类的方法

super(); ----->指向父类的无参构造方法

super可以和this一起看.

this.表示当前类的对象;

super.表示父类的对象.

this(有参);表示重载当前类的有参的构造方法;

super(无参);表示重载父类的无参的构造方法;

super(有参);表示重载父类的有参的构造方法.

super.什么时候不能省略?

就是子类中有和父类相同的变量名,然后又想在子类中指向父类的变量,那么就不能省略.

这个就不举例说明了.

昨天有一个很经典的作业,比较数字.首先是一个A类,里面有一个private的数字,然后在B类中写方法比较,居然要新建一个变量,private A a;

这个超出我的想象了.

作业如下:

猜数字游戏

一个类A有一个实例变量v,从键盘接收一个正整数作为实例变量v的初始值

另外再定义一个类B,对A类的实例变量v进行猜测

如果大了则提示大了

小了则提示小了

等于则提示猜测成功