一、实义及修饰属性内容
1、super:指的是: 父类的
2、super可以修饰属性,可以修饰方法;
在子类中均存在super调用父类的内容,但大部分均可省略
3、在特殊情况下,当子类和父类的属性重名时,你要想使用父类的属性,必须加上修饰符super.,只能通过super.属性来调用
4、在特殊情况下,当子类和父类的方法重名时,你要想使用父类的方法,必须加上修饰符super.,只能通过super.方法来调用
6.以下代码中父类和子类中age数值不同,所以必须加super
父类:
public class Person {
int age = 30;
public void eat(){
System.out.println("我可以吃饭");
}
}
子类:
public class Student extends Person{
int age = 20;
double score;
public void study(){
System.out.println("我可以学习。。。");
}
public void eat(){
System.out.println("我可以吃饭??????");
}
public void a(){
System.out.println(this.age);//20
System.out.println(this.age);//20
System.out.println(super.age);//30
this.eat();
super.eat();
}
}
二、修饰构造器
1、其 实 我 们 平 时 写 的 构 造 器 的 第 一 行 都 有 : super() -->作 用:调 用 父 类 的 空 构 造 器 ,只 是 我 们 一 般 都 省 略 不 写(所 有 构 造 器 的 第 一 行 默 认 情 况 下 都 有 super()。但 是 一 旦 你 的 构 造 器 中 显 示 的 使 用 super调 用 了 父 类 构 造 器,那 么 这个 super()就不 会 给 你 默 认 分 配 了 。如 果 构 造 器 中 没 有 显 示 的 调 用 父 类 构 造 器 的 话 ,那 么 第 一 行 都 有 super(),可 以 省 略 不 写)!
2、如 果 构 造 器 中 已 经 显 示 的 调 用 super父 类 构 造 器 ,那 么 它 的 第 一 行 就 没 有 默 认 分 配 的 super();
3、在构造器中,super调用父类构造器和this调用子类构造器只能存在一个,两者不能共存:
因为super修饰构造器要放在第一行,this修饰构造器也要放在第一行:
解决方案为:二选一
将this(score)改为 this.score= score;
4、以后写代码构造器的生成可以直接使用IDEA提供的快捷键:
-
-
- 第一步 :alt+insert
- 第二步:
-
-
-
- 第三步
-
-
-
- 第四步
-
最终生成: