重生之我要精通JAVA--第三周笔记

本文介绍了Java编程中的关键概念,如继承构造方法的使用、this和super的区别,多态的原理与优势,包的规则,final关键字的应用,权限修饰符的分类和抽象方法/抽象类的定义。
摘要由CSDN通过智能技术生成

继承

构造方法访问特点

  • 父类中的构造方法不会被子类继承
  • 子类中所有的构造方法默认先访问父类中的无参构造,再执行自己

为什么

  • 子类在初始化的时候,有可能会使用到父类中的数据,如果父类没有完成初始化,子类将无法使用父类的数据
  • 子类初始化前,一定要调用父类构造方法先完成父类数据空间的初始化

如何调用父类构造方法

  • 子类构造方法的第一行语句默认都是:super(),不写也存在,且必须在第一行
  • 如果想调用父类有参构造,必须手动写super进行调用

this、super使用总结

  • this:理解为一个变量,表示当前方法调用者的地址;
  • super:代表父类存储空间
关键字访问成员变量访问成员方法访问构造方法
thisthis.成员变量
访问本类成员变量
this.成员方法(…)
访问本类成员方法
this(…)
访问本类构造方法
supersuper.成员变量
访问父类成员变量
super.成员方法(…)
访问父类成员方法
super(…)
访问父类构造方法

多态

多态就是同类的对象,表现出的不同形态。

表现形式

父类对象 对象名称 = 子类对象

多态的前提

  • 有继承关系
  • 有父类引用指向子类对象
  • 有方法重写

调用

  • 调用成员变量:编译看左边,运行也看左边

  • 编译看左边:javac编译代码的时候,会看左边的父类中有没有这个变量,如果有,编译成功,反之编译失败

  • 运行也看左边:java运行代码的时候,实际获取的就是左边父类成员变量的值

  • 调用成员方法:编译看左边,运行看右边

  • 运行看左边:javac编译代码的时候,会看左边的父类中有没有这个方法,如果有,编译成功,反之编译失败

  • 运行看右边:java运行代码的时候,实际上运行的是子类中的方法

多态的优势

  • 在多态形式下,右边的对象可以实现解耦合,便于扩展和维护。

    Person p = new Student ();
    p.work();//业务逻辑发生改变时,后续代码无需修改
    
  • 定义方法的时候,使用父类型作为参数,可以接收所有子类对象,体现多态的扩展性与便利。

多态的弊端

  • 不能使用子类特有功能

  • 如果想使用就得强转:

    判断a是不是某类型类型:

    对象 instanceof 类型

    新特性:

    a instanceof Dog d----------判断a是否为Dog类型,如果是,则强转为Dog类型,变量名为d,如果不是则不强转,结果是false

包就是文件及。用来管理各种不同功能的Java类,方便后期代码维护。

  • 包名的规则:公司域名反写+包的作用,需要全部英文小写,见名知意。

使用其他类:

xxx.xxx.xxx.Student s = new xxx.xxx.xxx.Student();

使用其他类的规则

  • 使用同一个包中的类的时候,不需要导包
  • 使用java.lang包中的类是,不需要导包
  • 其他情况都需要导包
  • 如果同时使用两个包中的同类名,需要用全类名

final

方法:表明该方法是最终方法,不能重写

:表明该类是最终类,不能被继承

变量:叫做常量,只能被赋值一次

常量

实际开发中,常量一般作为系统的信息配置,方便维护,提高可读性。

常量的命名规范:

  • 单个单词:全部大写
  • 多个单词:全部大写,单词之间用下划线隔开

细节: final修饰的变量是基本类型:那么变量存储的数据值不能发生改变。

​ final修饰的变量是引用类型:那么变量存储的地址值不能发生改变,对象内部的可以改变。

权限修饰符

权限修饰符的分类

​ 有四种作用范围由小到大(private<空着不写<protected<public)

修饰符同一个类中同一个包中其他类不同包下的子类不同包下的无关类
private
空着不写
protected
public

权限修饰符的使用规则

实际开发中,一般只用private和public

  • 成员变量私有
  • 方法公开

特例:如果方法中的代码是抽取其他方法中共性代码,这个方法一般也私有

代码块

  • 局部代码块
  • 构造代码块
  • 静态代码块

静态代码块

格式:static{}

特点:需要通过static关键词修饰,随着类的加载而加载,并且自动触发,只执行一次

抽象方法和抽象类

  1. 抽象方法:将共性的行为(方法)抽取到父类之后,由于每一个子类执行的内容是不一样的,所以,在父类中不能确定具体的方法体。该方法就可以定义为抽象方法。
  2. 抽象类:如果一个类中存存在抽象方法,那么该类就必须声明为抽象类。

定义格式

  • 抽象方法:public abstract 返回值类型 方法名(参数列表)
  • 抽象类:public abstract class 类名{}

注意事项

  • 抽象类不能实例化

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

  • 可以有构造方法

  • 抽象类的子类

    • 要么重写抽象类中的所有抽象方法

    • 要么是抽象类

已经到底啦!!

  • 16
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值