JavaSE知识复习笔记05

本文详细介绍了Java面向对象编程中的重要概念,包括new关键字的实例化作用,static关键字的静态变量和方法,this和super关键字的使用,以及继承、final、package和import等关键字的含义。
摘要由CSDN通过智能技术生成

Java面向对象02

类相关的常用关键字

new关键字

  • 用于实例化一个对象
  • 根据参数调用类构造方法 并在堆内存开辟内存空间

static关键字

  • 静态修饰符 可以修饰变量和方法
  • 被static修饰的变量称作静态变量 被static修饰的方法称作静态方法
  • 静态数据与类本身绑定
    • 区分于实例变量 实例变量与对象绑定 一个对象对应一个实例变量
  • 调用时要通过类名直接调用
  • 可以通过对象调用静态属性或方法**(不建议使用)**
    • 空对象也可以调用静态方法 不会发生空指针异常
  • static关键字还可以用于定义静态代码块结构
class A {
    public staitc final int MAX_LENGTH = 10;
    public staitc void doThing() {...}
}

public class Test {
    public static void main(String[] args) {
        System.out.println(A.MAX_LENGTH);
        A a = null;
        // 也可以调用 也不会报错
        // 不建议使用
        a.doThings();
    }
}

this关键字

  • this永远指向调用该方法的对象 是指向对象的一个引用
  • 不能在静态方法使用 因为静态方法是类方法 没有对象
  • 多数情况下this都可以省略 当局部变量与成员变量命名相同时 可以使用this加以区分
  • 在构造方法中使用this()用于指向其他构造方法
    • 只能写在构造方法第一行 而且只能有一个
    • 不能与super()一起使用
Class A {
    int id;
    public A () {
        // 调用另一个有参数的构造
        this(0);
    }
    
    public A (int id) {
        // 用于区分两个id
        // this.id是实例变量
        this.id = id;
        // 单独使用this指定调用对象
        System.out.println(this);
    }
}

super关键字

  • 与this类似 super指向的是其父类 但super不是引用 不会指向父类实例 因此不能单独使用
  • 通过super() 调用父类构造方法
    • 与this()使用方式类似 只能放在第一行 而且只能写一次 不能和this()同时出现
    • 构造方法中如果不写this()/super()时 默认自动调用无参父类构造方法super()
    • this()/super()任意一个显式调用时 则不会调用父类无参构造方法
    • 调用了父类无参构造super()时 如果父类没有无参构造 编译器会报错
    • 因此 在任何情况下 都建议编写一个无参构造方法 防止出错
  • Java中允许子类存在于父类相同的变量 这个时候可以使用super加以区分

extends关键字

  • 在类名之后使用 说明该类继承的父类
  • 在Java中所有类的都是Object的子类 默认没有写extends的类 默认会直接继承Object类
  • Java中类只允许单继承 接口直接存在多继承
  • 子类
    • 又称派生类 SubClass
  • 父类
    • 又称基类 超类 SuperClass
  • 继承时 私有变量/方法不会被继承 构造方法不会被继承 其余的数据都会被继承给子类

final关键字

  • 最终修饰符 用于修饰类/变量/方法
  • final修饰的类 不能被继承
  • final修饰的方法 不能被覆盖
  • final修饰的变量 只能被赋值一次 随后不允许再次修改
    • 当final修饰成员变量时 此时编译不再自动给定初始值 必须手动赋值
      • 赋值动作只要在实例化完成之前做好即可 可以在声明时直接赋值 也可在构造方法中进行赋值
    • 当final变量的类型是引用数据类型时 因为只能赋值一次 所以一旦指向了内存地址 随后不能更改
      • 因为不能重新执行内 所以final修饰的引用数据在JVM关闭前不会被释放
      • 修饰引用数据类型时 只是引用不能重新赋值 引用指向的对象内部数据可以任意修改 因为修改也不是新的对象 还是之前的对象
    • final修饰的引用数据类型不能赋值为null
  • 因为final修饰的变量无法二次修改 通常在类中与static连用 形成静态常量 此时建议标识符全部大写 使用下划线_分割单词

package关键字

  • 标识当前类所在的包名 必须写在第一行 只能写一个

import关键字

  • 向当前类中导包 Java程序默认导入java.lang.*

abstract关键字

  • 用于定义抽象类与抽象方法

interface关键字

  • 用于定义接口

implements关键字

  • 用在类后 表明该类实现哪些接口
  • Java允许多实现 即实现多个接口
  • 实现接口时必须实现内部的所有方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值