【继承 - 拓展性】

概念

把多个类中相同的成员抽取出来放在一个类中,再使用extends关键字使他们产生联系

 

好处

  1) 提高了代码的可重用性

  2) 在升级代码时,不用重复书写以前的代码

 

坏处

  1) 增加了类和类之间的耦合

 

 程序的设计思路:低耦合,高内聚

 耦合:类和类之间的关系

 内聚:自己独立解决问题的能力

 

 老师出了一道很难的题,但是你们一定要做出来,怎么办呢?

 1. 自己努力做,查资料,直到把它做出来为止

 2. 发现同桌好像会,直接问他,或者抄一遍

 

 

java中继承的特点

  1)单线继承

  2)子类可以通过继承得到父类中所有非私有成员,注意构造器无法通过继承获取

  3)在构造子类对象时,会先构造父类对象

 

 

在使用继承时要注意的地方

  1)不要为了部分功能区强行继承

class A{

    void a();

    void b();

}

class B extends A{

    //void b();

    void c();

}

  2)继承必须体现一种特殊与一般的关系 is-a

class Worker extends Person

//体现了  Worker is a Person

  

class Pig{

    void eat();

}


class Student extends Pig{



}

  3) 构造子类对象时,会默认调用父类的无参构造

 

 

 

* 方法重写、方法覆盖、Override(重点)

  在子类中写一个和父类同名同参数列表的方法,然后修改方法的实现过程

 

  代码规范:重写的方法必须加上@Override 注解

 

  ** 方法重载:在同一个类中可以有多个同名不同参数的方法

 

 

 成员属性的寻找顺序:

 本类中寻找 -> 父类中寻找 -> 父类的父类 -> ...

 

 使用父类中的成员属性或方法,通过super.

 

面试题:解释重载与覆写的区别(解释overloading与overrid的区别)

 

NO

区别

重载

覆写

1

英文单词

Overloading

Override

2

发生范围

发生在一个类里面

发生在继承关系中

3

定义

方法名相同,参数类型个数不同

方法名相同,参数类型,个数相同,方法的返回值相同

4

权限

没有权限的限制

被覆写的方法不能拥有比父类更为严格的访问控制权限

 

在使用overloading的时候返回值能否不同?

在发生重载关系的时候,返回值可以不同,但是考虑到程序设计的统一性,重载时尽量保证方法的返回值类型相同。

 

** 继承中的初始化顺序

 1. 加载类的顺序

 

   先加载父类,再加载子类

   加载静态代码块和静态属性,加载顺序是它们的定义顺序

 

 2. 初始化对象

对象的构造顺序

   先构造父类对象,再构造子类对象

   初始化成员属性和构造块,初始化顺序是它们的定义顺序,最后执行构造器

 

class A{

}

class B extends A{

}

class C extends B{

}

 

加载类时,先A的静态块和静态属性,再B的静态块和静态属性,再C的静态块和静态属性

初始化对象时,先A的成员属性和构造块,再A的构造器;然后是B的成员属性和构造块,再B的构造器;

最后C的成员属性和构造块,然后C的构造器

猜你喜欢

转载自blog.csdn.net/qq_36194262/article/details/82948445
今日推荐