面向对象(继承)
- 继承本质是对某一批类的抽象,从而实现对现实世界更好的建模。
- extends的意思是“扩展”。子类是父类的拓展。
- Java中只有单继承,没有多继承。
- 继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖,组合,聚合等。
- 继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来表示。
- 子类和父类之间,从意义上来讲应该具有"is a"的关系。
- object类
- super
- 方法重写
先创建一个父类
package com.baidu.www.oop04;
//人 父类
public class Person {
//public
//default
//private
//protected
public int money=10_0000;
private int money1=10_0000_0000;
public void say(){
System.out.println("说了一句话");
}
public int getMoney1() {
return money1;
}
public void setMoney1(int money1) {
this.money1 = money1;
}
}
创建一个子类来继承父类 (extents)
package com.baidu.www.oop04;
//学生类 is 人
public class Student extends Person{
}
子类可以使用父类的方法和属性
package com.baidu.www.oop04;
public class Application {
public static void main(String[] args) {
Student student = new Student();
student.say(); //说了一句话
System.out.println(student.money); //100000
System.out.println(student.getMoney1()); //1000000000 和封装可以同时使用
Person person = new Person();
}
}
object类
在java中,所有的类,都默认直接或间接继承object
super
super注意点:
- supper调用父类的构造方法,必须在构造方法的第一个
- super必须只能出现在子类的方法或者构造方法中!
- super和this不能同时调用构造方法
vs this:
- 代表对象不同:
- this:本身调用者这个对象
- super:代表父类对象的引用
- 前提
- this:没有继承也可以使用
- super:只能在继承条件下才可以使用
- 构造方法
- this():本类的构造
- super():父类的构造!
例:最右边为子类,中间为父类
当父类方法前面为private时,无法被继承。
方法的重写
重写:需要有继承关系,子类重写父类的方法!
- 方法名必须一致
- 参数列表必须相同
- 修饰符:范围可以扩大: public>protected>Default>private
- 抛出的异常:范围可以被缩小,但不能被扩大:ClassNotFoundException —>Exception
静态方法:
非静态方法:重写只在非静态,子类重写父类
看输出语句区别
为什么需要重写:
- 父类的功能,子类不一定需要,或者不一定满足
快捷键: Alt+insert:override;