day09-继承、super关键字、构造方法、成员方法、方法重写、final、static

继承和修饰符

01、继承介绍

  • 问题 : 什么是继承 ?

     让类与类之间产生关系, 子父类关系, 子类就可以直接使用父类中
     ( 非私有的成员 )
    
  • 问题 : 如何实现继承 ?

    使用 extends 关键字
    
    class Zi extends Fu {}
    
    Zi :  子类 (派生类)
    Fu :  父类 (基类, 超类)
    
  • 问题 : 继承的出现, 给程序带来了怎样的好处 ?

    1. 提高了代码的复用性
    2. 提高了代码的维护性
    3. 是多态的前提
    

02、继承的好处和弊端

  • 问题 : 阐述继承的好处和弊端 ?

    好处 : 
    1. 提高了代码的复用性
    2. 提高了代码的维护性
    3. 是多态的前提
    
    弊端 :  类的耦合性增强了
    
    开发的推荐原则 :  高内聚, 低耦合
    
  • 问题 : 什么时候使用继承 ?

    让发现多个类之间存在共性(相同)内容,  并且还产生了 is...a 的关系
    就可以考虑使用继承来优化代码
    

03、继承中成员变量的访问特点

  • 问题 : 当子父类中出现了重名的成员变量, 调用的时候, 优先使用谁的 ? 能区分吗 ? 怎么区分 ?

  • 回答 :  会按照就近原则优先使用子类的成员变量,  如果想要区分的话
    使用 super 关键字
    

04、super关键字

  • 问题 : 什么是super关键字 ? 怎么用 ?

  • super : 调用父类相关成员
    
    super.父类的成员变量;
    super.父类的成员方法();
    super();  父类的构造方法
    

05、继承中构造方法的访问特点

  • 问题 : 子类初始化之前, 是否有必要完成父类的初始化 ?

  • 有必要,  因为子类在初始化的过程中, 很有可能使用到父类的成员
    如果父类没有提前完成初始化操作, 子类将无法使用父类的数据
    
  • 问题 : 初始化一个对象, 用的是哪个方法 ?

  • 构造方法
    
  • 问题 : 子类是如何访问到父类构造方法 ?

  • 在所有子类构造方法中,  第一行都默认隐藏了一句 super();  在访问父类的空参数构造方法
       
    
  • 线索 : 子类初始化之前,  只要有办法访问到父类的构造方法,  就能够完成父类的初始化 !!!
    

06、继承中成员方法的访问特点

  • 问题 : 子父类中出现了重名的成员方法, 创建子类对象调用方法, 执行的是谁的逻辑 ?

  • 执行子类的方法逻辑, 但这虽然是就近原则的现象
    实际上是子类的方法, 对父类的方法进行了重写 !
    

07、方法重写

  • 问题 : 什么是方法重载 (Overload)

  • 在同一个类中, 方法名相同,  参数不同, 与返回值无关
    
    参数不同:  1. 个数  2. 类型  3. 顺序
    
  • 问题 : 什么是方法重写 (Override)

  • 在继承关系中, 出现了方法声明一模一样的方法
     (方法名, 参数, 返回值)
    
  • 问题 : 子类什么时候需要重写父类的方法 ?

  • 简单记 :  子类需要父类的方法,  又想对方法进行增强,  就可以重写
    

08、Java中继承的注意事项

  • 问题 : Java是否允许多继承 ?

  • Java 只支持单继承, 不支持多继承, 但是可以多层继承
    

09、权限修饰符

  • 问题 : 权限修饰符有哪些 ? 各自的权限是多大 ?

  • private  :  在同一个类中
    (default) : 在同一个类中, 同一个包中
    protected : 在同一个类中, 同一个包中, 不同包的子类
    public : 任意位置
    

10、final关键字

  • 问题 : 什么是final关键字 ?

  • 是一种修饰符,  可以修饰 (方法,, 变量)
    
  • 问题 : 被 final关键字修饰后, 有什么特点 ?

  • 方法 :  不能被重写
    类 :  不能被继承
    变量 : 只能赋值一次, 不可做修改
    

11、final修饰局部变量

  • 问题 : final修饰基本数据类型变量, 引用数据类型变量, 有什么区别 ?

  • 基本数据类型 :  数据值不可改变
    引用数据类型 :  地址值不可改变
    
    final修饰成员变量 :  赋值时机
    
    1) 在定义的时候直接赋值
    2) 在构造方法中完成赋值
    

12、static关键字

  • 问题 : static 可以修饰哪些内容 ?

  • 1. 成员变量   2. 成员方法
    
  • 问题 : 被 static 修饰的成员有哪些特点 ?

  • 1. 被该类的所有对象所共享
    2. 多了一种调用方式, 可以通过类名.调用
    3. 随着类的加载而加载, 优先于对象存在
    
  • 问题 : 什么时候使用 static 修饰成员变量 ?

  • 如果该数据, 需要被类的所有对象共享, 就可以加入 static
    
    1. 同时在线人数  --> 所有的User对象, 都应该共享这份数据
    2. 某学生管理系统, 只是针对于传智专修学院 --> 所有的Student对象, 内部的 school 属性就应该被共享
    
  • 问题 : 什么时候使用 static 修饰成员方法 ?

  • 思路 : 自己设计一个方法, 该方法的功能可以独立存在, 并且没有使用非静态的成员,  就可以设计为 static
    
    主要的思想, 就是为了类名调用, 更加方便
    
  • 工具类 :

  • 如果一个类中, 所有的方法, 全部都是 static 静态的
    通常会多做一部操作, 私有构造方法, 为了方式他人创建对象使用
    

13、static关键字访问特点

  • 结论 : static方法中, 只能访问 static 的成员
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值