关键字、类对象、继承多态与包装类

Java 作为面向对象的经典编程语言,其核心知识点贯穿开发始终。本文整理了 final、this、static 等关键字用法、类与对象的核心概念、继承多态特性及包装类相关知识

一、核心关键字解析

1. final 关键字

final 关键字可修饰常量、方法和类,核心作用是限制修改与继承。

  • 修饰常量:必须初始化且赋值后不可修改,仅能赋值一次。
  • 修饰方法:被修饰的方法无法在子类中重写。
  • 修饰类:被修饰的类不能被继承,例如 Java 中的 String 类就是 final 修饰的类。
  • 早期用途:避免动态绑定带来的系统开销,短且未被覆盖的 final 方法可被编译器内联优化,提升执行效率。

2. this 关键字

this 关键字用于指代当前对象,解决变量命名冲突问题。

  • 访问属性:通过 this. 属性名称,明确调用当前对象的成员变量。
  • 调用方法:通过 this. 方法名,调用当前对象的其他成员方法。
  • 访问构造方法:通过 this () 实现构造方法间的调用,需放在构造方法第一条语句,且不能与 super () 同时使用。
  • 使用限制:不能在普通方法中使用 this () 访问构造方法。

3. static 关键字

static 关键字用于修饰变量和方法,实现数据与方法的共享。

  • 修饰变量:属于类变量,被该类所有对象共享,不依赖具体实例存在。
  • 修饰方法:属于类方法,可通过类名直接调用,不能用于修饰对象。

二、类与对象核心概念

1. 类与对象的关系

类是创建对象的模板或蓝图,定义了某类事物的共同属性和行为;对象是类的具体实例,是独一无二的实体。

  • 类的组成:包含属性(数据)和方法(行为),例如猫类可定义颜色、年龄等属性,以及跑、吃等方法。
  • 对象的创建:通过 new 关键字根据类实例化对象,类中有什么属性和方法,对象就拥有对应的内容,且每个对象的属性值可不同。

2. 链表节点示例

以 Node 类为例,展示对象的关联使用:

public class Node {
    public int data;
    public Node next;
    public Node(int data) {
        this.data = data;
    }
}
  • 每个 Node 对象包含 data 属性和指向 next 节点的引用,通过 next 属性可实现节点间的关联,形成链表结构。
  • 实例化后通过赋值地址值,建立节点间的连接关系,next 默认值为 null。

三、继承与多态基础

1. 继承特性

继承允许子类复用父类的属性和方法,子类可在父类基础上扩展功能。

  • 类的继承:通过 extends 关键字实现,Object 是所有类的父类。
  • final 类限制:被 final 修饰的类无法被继承,限制了继承关系的扩展。

2. 多态核心

多态是面向对象的重要特性,表现为同一方法在不同子类中有不同实现。

  • 实现前提:基于继承关系,子类重写父类方法(final 方法不可重写)。
  • 核心意义:提高代码的灵活性和可扩展性,使程序更易维护。

四、数据类型与包装类

1. 数据类型分类

Java 数据类型分为基本数据类型和引用数据类型。

  • 基本数据类型:包括整型、浮点型、字符型、布尔型,共 8 种(int、double、boolean、char、long、float、byte、short)。
  • 引用数据类型:包括类、接口、数组,其赋值操作传递的是地址值。
  • 数据删除本质:计算机中没有真正的删除操作,仅通过数据覆盖实现 “删除” 效果。

2. 包装类详解

包装类是基本数据类型对应的类,支持基本类型与包装类的相互转换。

  • 包装类对应关系:int→Integer、double→Double、boolean→Boolean 等。
  • 自动拆装箱:无需手动转换,基本类型可自动装箱为包装类,包装类可自动拆箱为基本类型。
  • 128 陷阱:Integer 缓存了 - 128 到 127 之间的数值,该范围内通过 valueOf 创建的对象引用相同,超出则创建新对象,导致 == 比较结果不同。

五、实用代码示例

数组最值交换

以下代码实现数组中最大值与最后一位元素交换、最小值与第一位元素交换:

,助力夯实编程基础。

public class ArrayExchange {
    public static void main(String[] args) {
        int[] arr = {6, 2, 9, 15, 1, 5, 20, 7, 18};
        int maxIndex = 0;
        int minIndex = 0;

        for (int i = 1; i < arr.length; i++) {
            if (arr[i] > arr[maxIndex]) {
                maxIndex = i;
            }
            if (arr[i] < arr[minIndex]) {
                minIndex = i;
            }
        }

        // 交换最大值与最后一位
        int temp = arr[maxIndex];
        arr[maxIndex] = arr[arr.length - 1];
        arr[arr.length - 1] = temp;

        // 交换最小值与第一位
        temp = arr[minIndex];
        arr[minIndex] = arr[0];
        arr[0] = temp;

        for (int num : arr) {
            System.out.print(num + " ");
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值