一、继承的概念
- 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
- 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
二、继承的作用
- 子类拥有父类的属性和方法,减少重复的代码,维护性高。
- 代码简洁,提高了代码的复用性。
三、继承关键字
- class——定义类
- interface——定义接口
- extends——继承父类
- implements——实现接口
extends和implements的区别:
相同点 :都属于Java中的继承 都发生在多各类中
不同点 :extends只能单继承,implements可以实现多继承 extends继承父类时,父类中可以存在方法的默认实现 而implements在实现接口时接口中不能有方法实现 extends发生在子类和父类之间,implements发生在实现 类和接口之间
生活中的继承
兔子和羊属于食草动物类,狮子和豹属于食肉动物类。 食草动物和食肉动物又是属于动物类。 父类更通用,子类更具体。 虽然食草动物和食肉动物都是属于动物,但是两者的属性和行为上有差别,所以子类会具有父类的一般特性也会具有自身的特性。
继承的特性
1. 子类拥有父类非 private 的属性、方法
2. 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展
3.子类可以用自己的方式实现父类的方法
4. 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)
5. Java 的继承是单继承,但是可以多代继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 A 类继承 B 类,B 类继承 C 类,所以按照关系就是 C 类是 B 类的父类,B 类是 A 类的父类,这是 Java 继承区别于 C++ 继承的一个特性
继承的优点
提高代码的复用性 子类中重复的代码只需要在父类中写一遍,所有子类都可以应用 提高代码的可维护性 只需要修改父类属性和方法,所有的子类都会应用 提高类和类之间的关联性,为多态做基础 其实这也是继承的缺点,增加了类和类之间的耦合度,耦合度的增加意味着后期扩展性的降低
继承的实列:
class Animal {
void eat() {
System.out.println("animal : eat");
}
}
class Dog extends Animal {
void eat() {
System.out.println("dog : eat");
}
void eatTest() {
this.eat(); // this 调用自己的方法
super.eat(); // super 调用父类方法
}
}
public class Test {
public static void main(String[] args) {
Animal a = new Animal();
a.eat();
Dog d = new Dog();
d.eatTest();
}
}
public interface A {
public void eat();
public void sleep();
}
public interface B {
public void show();
}
public class C implements A,B {
}