Java小白学习日记 Day4

本文详细介绍了Java中的继承机制,包括如何使用`extends`关键字,父类构造方法与成员变量的继承规则,以及多态的概念、实现方式(重写和重载)、优势与劣势。同时涵盖了抽象类、抽象方法、final修饰符和包的使用,以及匿名内部类的特性。
摘要由CSDN通过智能技术生成

Day4

继承

  • Java中使用 extends 关键字建立继承
  • 当类与类之间,存在相同的内容,并满足子类是父类中的一种,就可以考虑使用继承
  • 子类从父类中继承的内容
    • 父类的构造方法不能被继承
    • 父类的成员变量可以被继承,但是private修饰的不能访问
      • 创建子类实例的时候会在堆内存中先创建一个父类实例,该实例与子类实例相关联,父类实例不能被构造 两次
    • 父类的成员方法可以被继承
      • Java会从顶级父类中将不被 private , static , final 修饰的方法放进一个虚方法表,依次传承给孩子
构造方法非私有 不能private 不能
成员变量非私有 能private
成员方法虚方法表 能否则不能
  • Java中所有类都有一个祖先 Object
  • 成员变量的访问特点
    • 使用 this 表示使用本类的成员变量,使用 super 表示使用父类的成员变量
  • 成员方法的访问特点
    • 同成员变量
    • 方法的重写:当父类的方法不能满足子类现在的需求时,需要进行方法重写,在方法重写前,要添加@Ovverider重写注解
      • 方法的重写的本质:覆盖虚方法表中的虚方法
      • 只有被添加到虚方法表的方法才能被重写
  • 构造方法的访问特点
    • 父类的构造方法不会被子类继承
    • 子类中所有的构造方法默认先访问父类中的无参构造,再执行自己的
    • 想调用父类的有参构造,使用 super(paramenter1...)
  • this 理解为实例对象的地址,是类中默认存在的属性

多态

  • 多态是指一个单独的行为可以表现出多种形态

  • 多态的实现,相同父类的子类对父类中的方法进行Override或者Overload

  • Overload:同名方法但是参数不同

  • Override:同名方法并且参数和返回值都相同

  • 多态的表现形式:Fu f = new child(); 父类引用向上指向子类对象,这样可以提高代码复用

  • 多态调用成员

    • 调用成员变量:由于创建子类实例的时候,会创建一个父类实例,所以访问该实例的时候,调用的成员变量实际上是父类的变量
    • 调用成员方法:创建子类后,子类的方法会复写父类的同名方法,因此这个父类实例的方法和子类方法相同
    • 向上转型,会为child贴上parent的标签,他会被当成parent使用,可以访问他里面的所有与parent相关的东西
  • 多态的优势

    1. 多态形式下,右边的对象可以实现解耦合,便于扩展和维护
    2. 定义方法的时候,使用父类为形参,可以传入任何子类
  • 多态的劣势

    • 不能调用子类的特用功能

    Note: a instanceof b 可以判断a所记录的对象是不是b的类型

package

  • 包就是文件夹,用于管理不同功能的java类
  • 使用 import 关键字导包,可以直接使用某包中的东西
  • 使用同一个包中的类时不用导包

final

  • final修饰方法
    • 当前方法是最终方法,不能被重写
  • final修饰类
    • 当前类是最终类,不能被继承
  • final修饰变量(命名全部大写)
    • 表示为常量不能修改值

权限修饰符

修饰符同一个类中同一个包中其它类不同包下的子类不同包下的无关类
private
空着不写/friedly
protected
public
  • static 代码块:在类中使用 static 修饰代码块,可以在类第一次加载时运行代码,可以用于初始化静态成员变量

抽象类

  • 抽象方法:每一个子类的内容都不一样。如果一个类中有一个抽象方法,那么这个类必须是抽象类,其命名格式为:

    public abstract class Person {
      public abstract void work();
    }
    
  • 抽象类不能实例化

  • 抽象类中不一定有抽象方法,也有抽象方法的一定是抽象类

  • 可以有构造方法(用于为子类构造)

  • 抽象类和抽象方法的意义:可以通过父类的定义,知道这种方法的统一参数和返回值

匿名内部类

  • 本质:隐藏了名字的内部类

    new 类名或接口名() {
      方法重写;
    };
    
  • 33
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沅筱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值