2020-11-01继承

  • Java面向对象的三大特性:封装,继承,多态

1.继承(在原有类的基础上< 属性和方法>,构造一个新的 类。)

在 java 当中,用extends关键字来表示一个类继承了一个类。

父类更通用更抽象,子类更特殊更具体(因为父类相对于子类 而言,父类中有的方法,子类全都有;而子类有的属性和方法父类 未必有,所以子类更具体,父类更抽象)。

顶层是Object类,所以当你创建一个类时,都在间接或直接的 继承了Object父类,即你创建的类永远为子类

继承的特点:子类继承了父类的成员(即属性和方法),虽然 父类中私有的属性和方法也被继承了,但是访问不到。

2.引用类型比较方法

在object类中equals方法只能用来比较地址是否一样

String可以使用equals比较地址是因为它重写了equals方法

 public class Father(){} // 父类
 public class Son extends Father(){} // 子类 
  • 权限修饰符:private只支持同一类里面的;

  • friendly:支持同胞和本类;

  • protected:支持同胞 父子 本类;

  • public:全部都支持。

3.重写 与 重载

3.1重写:

当子类继承父类的方法,这些方法不满足自身需求时,子类可 以重写从父类继承的方法:

  • 返回类型、方法名、参数与父类完全相同。

方法重写要求:返回值类型相同或者父类返回值类型的子类 类型,方法名称相同

效果:子类在调用方法时,会调用自身重写的方法,父类的方 法就被覆盖了不可见。

3.2重载:

在同一类中方法名称相同,方法的参数列表不同,和返回值无 关

参数列表不同的表现形式:参数的类型不同,个数不同,位置不 同,参数列表不同和参数名称没有关系

4.equals 与 == 以及 instanceof的区别

  1. "==" 比较基本数据类型时比较的是表面值内容,而比较两个 对象时比较的是两个对象的内存地址值

  2. 对于equals方法,注意:equals 方法不能作用于基本数据类 型的变量,如果没有对equals方法进行重写,则比较的是引用类型 的变量所指向的对象的地址。

  3. 概括:

    在基本数据类型比较值内容时 ”=“

    引用类型时:如果 equals 重写则比较值内容 equals不重写则比较地址

    4.instanceof:用来判断内存中实际对象A是不是B类型,一般用 来做类的类型判断。如果是同类,则使用强转。

5.super 关键字

super关键字和this关键字的特点类似

super关键字代表的是父类对象的引用(保存的是父类引用对象 的内存地址)。

**this**关键字代表的是当前对象的引用(保存的是当前对象的内 存地址)。
   
当子父类的成员出现同名的时候,可以通过super关键字来区 分。子类的构造方法中,通过super关键字来调用父类的构造方法, 且必须是子类构造方法中的第一条语句。
   
当我们产生子类对象的时候,肯定先要去调用父类的构造方法 来产生父类的对象,再产生子类对象。

6.出入多态

多态存在的前提

  1. 要有继承
  2. 要有重写
  3. 要有父类引用指向子类对象
  • 多态的特性:扩展性较强
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。