三大特性(封装&继承&多态&super关键字&对象创建的过程)

三大特性(封装,继承,多态)


封装:对数据进行保护,通过访问修饰词private限制访问权限。再添加get/set方法对其访问。(get/set方法内可以添加if语句对所传参数进行判断,从而决定下一步操作。get/set封装更符合生活,对数据进行保护)

继承:类于类之间是si a 关系。子类继承父类, 从而可以获取父类中部分的方法、属性。

​ 注意:

  • java是单继承,一个类只能有一个直接的父类。单继承关系才 能才能形成简单树状结构

  • 子类是否可以继承父类的属性、方法,取决去父类中属性和方法的访问修饰符。

    • 访问修饰符 访问范围 继承性

      private 本类内部 不可继承

      (default) 本类+同包 同包下子类可以继承

      protected 本类+同包+子类 可以继承

      public 公开 可以继承

    • 构造方法:不可继承(构造方法支持重载)

    • 继承要满足里氏代换原则,否则我们的代码容易出现一些思想上的问题。

    • 组合/覆合复用原则:对于违反里氏代换原则的两个类,由于不存在is-a的关系,所以不能继承。可以用组合的方式实现代码的复用

多态:

  • 覆盖:方法名,参数列表,返回值类型相同;子类的访问修饰符比父类的访问修饰符相同或更宽;父类要比子类抛出更多更宽泛的异常。

  • 重载:方法名相同,参数列表不同·(数据类型、顺序、个数)。与访问修饰符、返回值类型,抛出的异常无关。

  • 对象创建的过程:

    ​ 例子:创建对象c c继承了对象b b继承了对象a

    ​ a—>b---->c

    执行顺序如下:

    1.分配空间

    2.初始化a的属性

    3.执行a的构造方法

    4.初始化b的属性

    5.执行b的构造方法

    6.初始化c的属性

    7.执行c的构造方法

  • super关键字的使用和注意事项:

    • 第一种应用super()

    1.super()/super(实参):用于子类的构造方法中,代表创建父类对象时,指示JVM利用哪一个构造方法完成父类对象的创建;而且必须放在子类构造方法中的第一行有效语句。

    2.注意:

    ​ ①如果子类构造方法中的第一行没有定义super()/super(实参),则JVM会默认在第一行添加super()

    ​ ②一个构造方法中不能同时定义this()/this(实参)和super()/super(实参)

    • 第二种应用super.

      ​ ①super.用于子类的构造方法或是成员方法中,调用父类的属性和父类的成员方法

      ​ ②super.父类属性名 / super.父类中的成员方法名(实参);

  • 多态:子类对象可以赋值给父类引用

    • 只能对引用调用其引用类型中声明的方法
    • 运行时,根据对象的实际类型,调用子类覆盖之后的方法
    • 引用转换类型时,只能用于父类引用赋值给子类引用。需用instanceof关键字判断是否兼容
  • 多态的意义

    • 把不同的子类对象看做是父类进行处理。屏蔽不同子类之间的差异 通用性
    • 多态用在参数上 m(A a); m方法允许A或A的子类作为参数
    • 多态用在返回值上 A m(); m方法允许返回A对象或是A的子类对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值