面向对象之继承
1.1继承的概述
- 继承是面向对象的核心特性,是面向对象的学习重点。
- 继承是代码复用的重要方式,是类与类之间的一种关系。
- 从类与类之间的设计来看,子类必须是属于父类的一种时才会继承。
- 父类抽出了共性的内容,子类可以在父类的基础上拓展新的属性和行为。
- 子类拥有父类的所有属性和方法,无需重新定义,并且子类可以直接使用父类中的非私有成员。
1.2继承的格式
- 使用extends关键字实现
- 格式:
class 子类 extends 父类{
}
1.3继承的优点
- 提高代码的重用性,减少代码冗余
- 有利于后期对象的增强、扩展
1.4继承的案例
- 创建父类和子类
package csdn;
//创建一个父类Animal
public class Animal {
private int age;
private int numOfLegs;//创建动物的共有属性年龄和腿的条数
public Animal() {
}
public Animal(int age, int numOfLegs) {
this.age = age;
this.numOfLegs = numOfLegs;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getNumOfLegs() {
return numOfLegs;
}
public void eat() {
System.out.println("年龄为"+getAge()+"岁的有"+getNumOfLegs()+"条腿的动物在吃饭饭");//创建动物的共有方法吃饭饭
}
}
//创建子类Cat
class Cat extends Animal {
public Cat() {
}
public Cat(int age, int numOfLegs) {
super(age, numOfLegs);//Cat直接继承了Animal的属性
}
}
- 创建一个测试类来验证
package csdn;
//创建测试类
public class TsetAnimal {
public static void main(String[] args) {
Cat cat = new Cat(2, 4);// Cat年龄和腿的条数赋值成功
cat.eat();//创建的子类对象cat可以直接调用父类的方法
}
}
2.1方法重写
- 方法重写的概念:当子类继承父类后,拥有了父类的成员并可以直接调用父类的非私有方法,如果子类认为父类提供的方法不够强大,子类可以按照自身逻辑重新定义继承过来的方法,这个定义方法的过程叫做重写。
*方法重写的格式:
定义一个方法声明和父类完全相同的方法,方法体重写。
2.2方法重写案例
class Rabbit extends Herbivore{
public Rabbit() {
}
public Rabbit(int age,int numOfLegs) {
super(age,numOfLegs);
}
public void eat() {
System.out.println("年龄为"+getAge()+"岁的有"+getNumOfLegs()+"条腿的兔子在吃狗尾巴草");
}
}
- 再次调用测试类
package csdn;
//创建测试类
public class TsetAnimal {
public static void main(String[] args) {
Cat cat = new Cat(2, 4);// Cat年龄和腿的条数赋值成功
cat.eat();//创建的子类对象调用eat方法
}
}
2.3方法重写的注意事项
- 方法名称必须相同
- 参数列表必须相同
- 访问权限相同或者子类的访问权限更大
- 子类方法的返回值(基本数据类型)必须和父类相同