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进行猜测
如果大了则提示大了
小了则提示小了
等于则提示猜测成功