JavaSE(上)-Day9

本文详细介绍了JavaSE中的集合使用,静态变量和静态方法的概念,以及继承机制、main方法的重新认识、构造方法的访问特点和重写规则。特别强调了静态成员的特点和使用注意事项。
摘要由CSDN通过智能技术生成

集合

  1. 因为数组是不可变的,我们在不确定一个容器长度的时候,应该选择一个长度可变的容器,此时引出了ArrayList
  2. ArrayList需要指定泛型,泛型不可以是基本数据类型,我们可以使用基本数据类型的包装类
  3. 在创建ArrayList对象的时候,JDK7之前两个泛型位置都需要填写泛型,JDK7之后,只需要填写前面位置的泛型,但后面也需要<>
  4. ArrayList的容器默认的容量为0,可以自动扩容
  5. ArrayList有便捷的方法,新增add(E)->boolean,修改set(index,E) ->oldE,删除remove(E)->boolean 或 remove(index)->E,查询get(index)->E

static

静态变量

1.用static修饰的成员变量就是静态变量
2.静态变量创建是随着类的字节码文件加载到元空间后,在堆内存中的静态区添加该静态变量进行存储,先设置默认初始值,然后显式赋值,然后方法里赋值,成员变量是随着对象的创建,在堆内存中开辟空间存储
3.静态变量是属于类的,可以被这个类所有的对象共享编辑或使用
4.一般通过类名.静态变量名调用
5.同一种对象共用的一个属性就可以定义成静态变量

静态方法

1.用static修饰的成员方法就是静态方法
2.静态方法用于Test类和工具类
3.JavaBean类指的是描述一类事物的类
4.Test类是用于测试其他类的类
5.工具类是帮我们做一些事情的类,不描述一类事物
6.工具类要求见名知其义
7.私有化构造方法,不可以定义工具类的对象,因为工具类的对象是无意义的
8.方法定义成静态的,方便调用
9.用类名.静态方法名(…),是从元空间中找到这个类的字节码文件,找到对应的静态方法名进栈运行

静态方法的注意事项

  1. 静态方法中是没有this关键字的,其实是因为成员方法中this作为第一个形参隐藏起来啦,给的值就是调用者的地址,而静态方法没有this
  2. 静态方法不用成员变量和成员方法,原因就是没有this关键字
  3. 成员方法既可以调用成员方法又可以调用静态方法,每个对象都可以调用类创建的静态区的静态变量

重新认识main方法

  1. public给出足够大的访问权限,便于JVM调用
  2. staticJVM不需要实例化,直接调用
  3. voidJVM不提供返回值
  4. main为JVM查询的方法入口名称,固定
  5. String[] args过去接收一些参数,现在由Scanner代替

继承

为什么需要继承?

  1. 当类与类之前有相同的属性和方法时,并且这些类又是同一大类,就可以使用继承
  2. 可以把子类中共同的属性和方法提取到父类中,提高代码的复用性
  3. 子类 extends 父类,可以让子类使用父类的属性和方法,子类只需要补充编写特有的属性和方法
  4. extends关键字是让两个类建立继承关系,满足语句:子类是父类。

继承注意事项

  1. Java是单继承,只能继承一个直接父类,支持多层继承,可以有多个间接父类
  2. Java中所有的类都直接或间接的继承Object类
  3. 子类只能访问父类中非私有的成员变量和成员方法(代码层面)

子类到底能继承父类哪些内容

  1. 子类不能继承父类的构造方法,父类的构造方法拷贝过来不符合要求 public/private 类名
  2. 子类可以继承父类的成员变量, 虽然可以继承父类的私有成员变量,但无法直接使用
  3. 子类可以继承父类非private且非static且非final的成员方法,它们属于虚方法,会传给子类方便直接调用,如果不是虚方法,就需要先找子类,再找父类,周而复始,没有则报错

继承中成员变量和成员方法的访问特点

  1. 就近原则 先局部找,然后在本类找,最后再父类中找,逐级向上,找不到报错
  2. 可以用this,super改变找的起点

重写

  1. 当父类的方法不满足子类的需求,可以重写该方法
  2. 重写要求方法名和形参列表完全相同
  3. 要求访问修饰符权限子类>=父类
  4. 要求返回值范围子类 <= 父类
  5. 重写写@Override注解,方便进行重写格式的校验
  6. 重写只可以重写虚方法,重写本质就是覆盖虚方法

构造方法的访问特点

  1. 父类的构造方法不能被子类继承
  2. 子类构造方法默认情况调用父类的无参构造方法super();,为了给父类属性完成初始化,父类的属性初始化完毕,子类才可以调用
  3. super(); this();必须出现在构造方法的第一行,两者互斥
  4. 想要调用有参的父类构造方法,需要显式的在子类构造方法的第一行调用。

this & super

  1. this指的是调用者的地址值,可以理解一个形参变量
  2. super代表父类的存储空间
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

自律最差的编程狗

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

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

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

打赏作者

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

抵扣说明:

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

余额充值