Day08 Java培训笔记

匿名对象

  1. 概述:没有名字的对象
  2. 使用: new 类名().成员
  3. 注意:
  • 如果使用匿名对象的话,需要在方法只调用一次的时候
  • 如果使用的匿名对象为属性赋值,再用匿名对象去取值,是不可以的(因为会new很多次,会产生多个对象)
  1. 使用场景:一般用于单纯的调方法

继承

  • 父类 超类 基类:
    定义一个类,定义了这些个类的共性内容,将属于这个类的其他类的共性抽取出来 形成一个父类
  • 子类 派生类:
    其他属于此类的类都继承这个父类,那么久直接拥有了,这个父类中的共性内容,那么子类就没有必要去反复的写这个共性内容了
  • 注意:
    子类继承父类后,可以拥有父类中(非私有的内容)
    构造方法不能被继承(因为构造方法的方法名是根据本类来的)
  • 使用场景:
    如果我们定义了好几个类,类中都有共性的内容,我们就可以定义一个父类出来,吧这些类的共性抽取出来,减少了代码量
  • 格式:
    创建父类
    创建子类
    子类 extends 父类
    子类就拥有了父类中的非私有成员
    创建子类对象调用继承过来的父类
  • 继承中成员变量的访问特点:
    • 子类和父类中定义出来的变量不重名
      当new父类对象时,只能调用自己的成员变量,不能调用子类的成员变量
      当我们new子类的对象时,既能调用继承父类的也能调用自己特有的成员变量
      如果是new的父类对象,只能调用自己父类的方法
      如果是new的子类对象,那么既能调用父类继承过来的,还能调用自己特有的方法

    • 重名
      看等号左边是谁,优先调用谁的成员变量,如果子类中没有,找父类
      看new的是谁,先走谁中的方法,子类没有找父类

    • 总结:子债父偿

  • 继承中三种变量(父类成员变量 子类成员变量 子类局部变量)重名的访问特点:
    优先访问子类局部变量
    super–>代表的是父类成员变量,可以区分子类和父类重名的成员
    【扩展:如果没有明确继承某一个父类的话,这个类也是有父类的,这个类的父类就是Object类(所有类的父类)】
  • 方法的重写(覆盖、覆写)
    • 概述: 子类有&父类一模一样的方法
    • 访问特点: 看new的是谁,先调用谁,子类没找到父类
    • 注解: @Override–>可以检查此方法是否是重写方法
    • 前提: 子父类继承关系
    • 注意事项:
      1. 子类方法覆盖父类方法,必须要保证权限大于等于父类权限(public protected 默认(default) private)
      2. 子类方法覆盖父类方法,返回值类型、函数名和参数列表都要一模一样
      3. 私有方法不能被重写(父类私有成员子类是不能继承的)
      4. 子类方法重写父类方法时,子类的方法返回值要是父类方法返回值的子类或者一样
      5. 构造方法中,第一行默认会有一个super(),super() 代表的是父类的空参构造,即使没有手写,默认也有
      6. 子类中如果写了有参构造,默认第一行会调用父类的有参构造,如果子类的有参构造中super(参数),去掉,就会找父类无参构造
        【总结:方法的重写,就写成和父类一模一样的】
    • 继承中super的使用
      super–>代表的是父类对象
      特点:可以调用父类的构造,普通方法,成员变量
      访问父类的空参构造–>在子类的构造方法中第一行: super(参数)
      访问父类的成员变量–>在子类的方法中:super.成员变量
      访问父类的成员方法–>在子类的方法中:super.方法名(参数)
  • this的使用:
    作用:区分成员变量和局部变量重名问题
    使用本类的成员变量–>在本类中:this.成员变量名
    调用本类的方法–>在本类中:this.方法名(参数)
    调用本类的构造方法–>在本类的构造方法中:this(参数)
    注意:
  1. 使用this调用本类的其他构造方法时,也要在构造方法的第一行,但是this(参数),不会自动提供的,想使用自己写
  2. this和super在构造方法中不能同时出现
  3. 在本类中有参和空参不能相互调用
  • 总结:
    super多用在子类中,调用父类的成员
    this多用在本类中,调用自己的成员

  • 继承的特点:

    1. 继承不支持多继承
    2. 继承支持单继承,多层继承
    3. 一个父类可以拥有多个子类

抽象

  • 抽象类定义:abstract class 类名
  • 抽象方法定义:修饰符 abstract 返回值类型 方法名(参数);
  • 使用:
    1. 定义子类,继承抽象类
    2. 重写父类中的抽象方法(要重写父类中所有的抽象方法)
    3. 创建子类对象,调用重写的方法(抽象方法不能new对象)
  • 注意:
    1. 抽象方法所在类一定是抽象类
    2. 抽象类中不一定非得有抽象方法
    3. 抽象类中除了有抽象方法,还可以有其他普通类的成员
  • 注意事项:
  1. 抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象
  2. 抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的
  3. 抽象类中,不一定包含抽象方法,但是有抽象方法必定是抽象类
  4. 抽象的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错,除非该子类也是抽象类
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值