1.this和super
作用
this: 区分本类的成员变量和局部变量同名情况
super:区分父类的成员变量和局部变量同名情况
用法
this.成员变量名;//访问本类的成员变量
this.成员方法名();//调用本类成员方法(this可以省略)super.成员变量名;//访问父类的成员变量
super.成员方法名();//调用父类的成员方法(super不可以省略)
this和super的高级使用
this(参数); 用来调用本类的其他构造 其他构造是指哪一个构造? 由this()中的参数决定
需求: 无论调用者通过何种方式 创建对象 要求这个对象的名字必须是"旺财" 年龄必须是18
super(); 用来调用父类的其他构造 无论调用子类的哪一个构造,都会先执行父类的无参构造
java这么设计类,是有原因:单一职责原则,
一个类不能太累,一个类只负责给本类的成员变量赋值super();//调用父类的无参构造(默认的)
super(参数);//调用父类的有参构造
具体调用哪一个有参构造,有参数的类型决定 父类中方法,太low,不适用,不完善,那么子类需要自己重写他,自己实现他
2.扩展
this(参数);//调用本类的其他构造,具体是哪一个构造,由参数类型决定
super(参数): //调用父类的构造,具体哪一个构造,由参数类型决定
结论
a.子类中任何一个构造,都会无条件先调用父类的无参构造
b.我们可以通过 super(参数),调用父类中指定参数的构造
3.方法的重载与重写
1.方法的重载(overload)
在同一个类,方法名相同,但是参数列表不同,这时候这几个方法被称为方法的重载 参数列表不同:
参数个数不同,参数类型不同,参数顺序不同
2.方法的重写(override)
在继承中,子类出现了和父类一模一样的方法,那么子类中这个方法被称为方法的重写
注意事项
1: 子类和父类中重写的那个方法权限可以不一样,子类方法权限>=父类方法权限
2.如果父类的方法是private修饰,子类不能重写
4.抽象类
什么叫抽象类: 只要一个类 是abstract修饰的那么这个类就是抽象类
和 这个类中有没有抽象方法,没有必然的联系
什么叫抽象方法:
方法由abstract修饰,并且没有方法体的方法
不能创建对象,天生作为父类 抽象类中的抽象方法有什么作用?
1.抽象类中的抽象方法不是为了调用的
2.为了强制子类去重写