一、类的继承理解

在java中类的继承是指:在一个现有类的基础之上去构建一个新的类,构建出来的新的类被称为子类,现有类是父类,子类会自动拥有父类所有可继承的属性和方法。继承类是现有类的更具体一些,继承类可能只拥有一部分父类的属性和方法。

java的继承关键字 java继承类的关键字_java的继承关键字

如图,这就表示了继承类是父类的一种更具体形式。

二、继承类的使用

1、需要关键字extends如图继承了Employee类

java的继承关键字 java继承类的关键字_java的继承关键字_02

一旦继承,父类的所有可继承的变量和方法子类都自动继承。也就是说你可以用子类的对象调用父类的成员,还有子类的成员和方法。也就是说子类可以调用自己的东西,也可以调用父类的东西。

三、继承的好处

1、继承的出现提高了代码的复用性,t提高了软件开发效率。比如:父类有的变量不用写了。 

2、继承的出现让类与类之间产生了关系,提供了多态的前提,比如:类与类之间有了继承关系。

那么继承跟多态有什么关系?

多态:是一个事物拥有不同的形态,在java中就是一个类有不同的具体类。比如:公司里的所有员工统称为员工,员工又分为开发员工,研发员工,维护员工。分出的这些不同功能的员工就是多态。

四、继承的注意事项

1、java中只允许单继承,即:一个类只能有一个父类。因为多继承有安全问题如图:

java的继承关键字 java继承类的关键字_java重写重载_03

会造成c对象调用的方法,分不清调用谁的方法。

2、允许多个类继承一个类。

3、允许多次继承。比如:A继承B,B继承C。如图:

java的继承关键字 java继承类的关键字_java重写重载_04

上面是多层继承。层次越多,拥有的功能也就越多。联系多继承,那么c对象调用方法时,调用的是B的方法。如下图:

java的继承关键字 java继承类的关键字_父类_05

此时C.调用的就是B类的方法,可以用就近原则来解释。

4、java中的父类和子类是一个相对的概念。因为一个类可以是一个类的父类,也可以是另一个类的子类。

五、继承体系和抽象

我认为继承形成了抽象关系。所谓的父类就是集成了各个具体类的共性东西。最高的父类,就是最共性的东西。子类不但具有共性的东西,还具有自己的特性东西。子类的共性抽取,形成父类。最后抽取出来的说不清的类,就成了抽象类。抽象类即:有这个功能,但是他不是一个对象,无法形成对象。比如,人,猫,鱼抽象成动物,动物是个物体吗?动物不是物,是个名词,不是个实体,无法作为对象。故就是一个抽象类。

六、继承后子类和父类的成员变量的变化。

1、子类的对象,调用成员变量,子类自己有,使用自己的,子类没有,调用父类的。其实还是就近原则。

七、super关键字的使用。

1、super关键字的需要。

如果有一个父类,一个子类。父类和子类都对属性int age 赋了值,当main方法调用了子类对象,并要打印子类age时,系统会根据就近原则打印出子类赋给age的值。但是问题来了,如果要打印父类赋给age的值时如何处理?

super关键字:用来表示当前对象中包含父类对象空间的引用。 也就是说super代表的是当前类的父类的对象。

2、注意:

子类又叫派生类,父类又叫基类或者超类。

this.是调用本类成员。

super.是调用自己父类成员。

八、重写和重载问题

1、重载:(overload)。重载是一个类当中方法名相同,但是方法参数不同。

2、重写(覆盖):(override)重写是父类和子类当中出现了一样的方法名时方法名,修饰符,参数列表都相同(方法主体不同)被称为子类重写父类的方法。

前者是同一个类的事情,后者是子父类的事情。方法的重写具有非常重要的扩展功能。

九、java方法中的重写问题注意事项:

1、子类重写父类方法,必须保证子类方法的权限大于或等于父类方法权限。

四大权限:public(公有)>protected(受保护)> default(默认权限)> private(私有的)

2、方法的名,返回类型,参数列表都要一模一样