抽象:从已有事物中提取共性,形成新事物的过程,叫做抽象.
继承关系指的是,可以基于某个父类对对象的定义加以拓展,增强,而产生新的子类定义,子类可以继承父类的某些定义,也可以增加原来父类没有的定义,或者覆写父类的某些特性.
从面向对象的角度来说,继承是一种从一般到特殊的关系,是一种 "is a"的关系,即子类是对父类的拓展,是一种特殊的父类.比如狗是动物的一种特殊情况,狗属于动物.
多态:把子类对象赋给父类对象引用,就会产生多态.多态指的是该变量可以有多种形态,在运行时表现出具体子类的特征,在接口中体现更明显.
Animal a = new Dog();
a的编译类型(声明类型)是Animal,运行类型(真实类型)是Dog.如果想调用Dog类的某个Animal中的方法,此时需要强转.(Strong cast)
如(Dog)a.bark();
java中只支持类的单继承.Object是所有类的直接或间接父类.
最后,继承会破坏封装.
我们根据访问控制修饰符来判断,子类到底继承了父类的那些成员
1.如果父类的成员用public修饰,子类继承
2.如果父类的成员用protected修饰,子类继承,即使父类和子类可能不在同一个包中
3.如果父类和子类在同一包中,继承缺省修饰符的成员.
4.如果父类成员用private修饰,不能被继承
5.父类的构造器,子类也不能继承,因为构造器必须和当前类名相同.