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

文章目录

继承

构造方法访问特点

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

为什么

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

如何调用父类构造方法

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

this、super使用总结

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

多态

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

表现形式

java 复制代码
父类对象 对象名称 = 子类对象

多态的前提

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

调用

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

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

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

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

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

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

多态的优势

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

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

多态的弊端

  • 不能使用子类特有功能

  • 如果想使用就得强转:

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

    对象 instanceof 类型

    新特性:

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

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

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

使用其他类:

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 类名{}

注意事项

  • 抽象类不能实例化

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

  • 可以有构造方法

  • 抽象类的子类

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

    • 要么是抽象类

已经到底啦!!

相关推荐
qq_441996057 分钟前
Mybatis官方生成器使用示例
java·mybatis
xiaoyaolangwj10 分钟前
高翔【自动驾驶与机器人中的SLAM技术】学习笔记(十三)图优化SLAM的本质
学习·机器人·自动驾驶
巨大八爪鱼13 分钟前
XP系统下用mod_jk 1.2.40整合apache2.2.16和tomcat 6.0.29,让apache可以同时访问php和jsp页面
java·tomcat·apache·mod_jk
静止了所有花开1 小时前
SpringMVC学习笔记(二)
笔记·学习
爱吃生蚝的于勒1 小时前
C语言内存函数
c语言·开发语言·数据结构·c++·学习·算法
码上一元2 小时前
SpringBoot自动装配原理解析
java·spring boot·后端
计算机-秋大田2 小时前
基于微信小程序的养老院管理系统的设计与实现,LW+源码+讲解
java·spring boot·微信小程序·小程序·vue
L_cl3 小时前
Python学习从0到1 day26 第三阶段 Spark ④ 数据输出
学习
Mephisto.java4 小时前
【大数据学习 | HBASE】hbase的读数据流程与hbase读取数据
大数据·学习·hbase
魔道不误砍柴功4 小时前
简单叙述 Spring Boot 启动过程
java·数据库·spring boot