java面向对象(继承与多态)
程序员文章站
2024-03-15 17:45:48
...
一、继承
继承的概念
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
虽然食草动物和食肉动物都是属于动物,但是两者的属性和行为上有差别,所以子类会具有父类的一般特性也会具有自身的特性。
继承的使用
在Java中继承的关键字是extends
把公共属性和行为提取出来放在父类,由子类扩充父类来实现更多的特性,这样就节约了很多代码,程序变得更加简洁,而且容易扩充。
例如
class 父类 {
}
class 子类 extends 父类 {
}
需要注意的是 Java 不支持多继承,但支持多重继承。
二、多态
多态是同一个行为具有多个不同表现形式或形态的能力。
多态的优点:
- 可替换性
- 可扩充性
- 接口性
- 灵活性
- 简化性
多态存在的三个必要条件
- 继承
- 重写
- 父类引用指向子类对象
方法覆盖(重写)
子类需要对父类的运转方法加以改进,变成子类自己的运转方法,这就需要在子类中重新编写运转方法,覆盖父类的运转方法,这种做法在JAVA中叫做方法的覆盖
例如在父类中定义
public String show(){
return "";
}
而在子类中
public String show(){
return "名称:"+super.getName()+"\n价格:"+super.getPrice()+"元"+"\n大小:"+super.getSize()+"寸";
}
方法的重载和重写的区别:
重载可以发生任何一个类,而重写则只能是子类重写父类方法。
Super关键字
Super关键字引用当前对象的直接父类中的属性和方法(用来访问直接父类中被隐藏的属性和方法,经常在基类与派生类中有相同属性和方法定义时使用)
除了调用父类同名方法外,super还广泛的运用于构造方法内。
我们可以*书写super(),要遵循一定的原则:
1.super要放在第一行
2.super所指引的构造方法在父类中必须要有。
public PizzaSeafood(String name,int size, int price) {
super(name,size, price);
...
}
Final关键字
-
final修饰类,那么这个类就不能被继承。
-
final修饰方法,那么这个方法就不能被重写。
-
final修饰属性那么属性值不能在被修改,
-
final修饰变量,如果变量一旦被赋值,那么变量无法被修改