【Java】面向对象核心知识点(三),文章层次分明,内容精益求精,代码简单易懂

本文主要是介绍【Java】面向对象核心知识点(三),文章层次分明,内容精益求精,代码简单易懂,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、对象类型转换

1.1 情况

1.2 语法

1.3 代码

1.4 结论

二、static关键字

2.1 作用

2.2 代码

三、final关键字

3.1 作用

3.2 代码

四、instanceof关键字

4.1 作用

4.2 代码


(原创文章,转载请注明出处)

博主是计算机专业大学生,不定期更新原创优质文章,感兴趣的小伙伴可以关注博主主页支持一下,您的每一个点赞、收藏和关注都是对博主最大的支持!


一、对象类型转换

1.1 情况

Java中对象类型转换有两种:

  • 向上转型:子类对象→父类对象(小范围→大范围,属于自动转换)
  • 向下转型:父类对象→子类对象(大范围→小范围,属于强制转换)

1.2 语法

(1)向上转型

父类名 父类实例对象 = new 子类名()
// 或者分开写
子类名 子类实例对象 = new 子类名()
父类名 父类实例对象 = 子类实例对象

(2)向下转型

子类名 子类实例对象 = (子类名) 父类实例对象

1.3 代码

①父类

public class Father {public String show() {return "父类方法";}
}

②子类

public class Child extends Father {@Overridepublic String show() {return "子类方法";}
}

③测试类

public class SwitchTest {public static void main(String[] args) {// 向上转型:子类对象→父类对象Father father = new Child();System.out.println(father.show());  // 输出:子类方法// 向下转型:父类对象→子类对象Child child = (Child) father;System.out.println(child.show());  // 输出:子类方法}
}

1.4 结论

  • 对象发生向上转型后,所调用的方法一定为被子类重写过的方法
  • 父类的实例转换为子类的实例,子类实例对象调用的方法已重写
  • 向下转型时不能直接将父类实例强制转换为子类实例,否则报错

以下格式为错误格式

子类名 子类实例对象 = (子类名) new 父类名( )

二、static关键字

2.1 作用

在Java中,static关键字用于修饰类的成员,包括变量和方法。它具有以下作用:

  • 对于静态变量,static关键字使得该变量在类的所有对象中共享,即每个对象对于同一个静态变量的修改都会影响其他对象对该变量的访问。静态变量可以通过类名直接访问。
  • 对于静态方法,static关键字使得该方法不依赖于类的实例,可以直接通过类名调用。静态方法无法访问非静态成员,因为非静态成员依赖于类的实例。

静态代码块:static{ }包裹的代码块称为静态代码块,静态代码块在类加载的时候会自动执行一次,并且在类的生命周期中只执行一次,通常用于初始化静态资源。

2.2 代码

① 例子类

public class Example {static String name = "我是静态变量";static String show() {return "我是静态方法";}static {System.out.println("我是静态代码块");}
}

② 测试类

public class ExampleTest {public static void main(String[] args) {System.out.println(Example.name);System.out.println(Example.show());// 输出:// 我是静态代码块// 我是静态变量// 我是静态方法}
}

三、final关键字

3.1 作用

在Java中,final关键字用于修饰变量、方法和类。它具有以下作用:

  • 对于变量,final关键字使得该变量的值只能被赋值一次,即它是一个常量,不能再被修改。
  • 对于方法,final关键字使得该方法不能被子类重写或覆盖。
  • 对于类,final关键字使得该类不能被继承。

3.2 代码

① 修饰变量

// 例子类
public class Example {public final String finalVariate = "我是final修饰的变量";
}// 测试类
public class ExampleTest {public static void main(String[] args) {Example example = new Example();example.finalVariate = "修改final修饰的变量";  // 出现编译错误}
}

② 修饰方法

// 父类
public class Father {public final String finalMethod() {return "我是final修饰的方法";}
}// 子类
public class Child extends Father {public String finalMethod() {  // 出现编译错误return "继承父类方法";}
}

③ 修饰类

// 父类
public final class Father { }// 子类
public class Child extends Father { } // 出现编译错误

四、instanceof关键字

4.1 作用

在Java中,instanceof关键字用于判断一个对象是否是指定类或其子类的实例。它返回一个布尔值,如果对象是指定类或其子类的实例,返回true;否则,返回false。

4.2 代码

// 父类
public class Father { }// 子类
public class Child extends Father { }// 测试类
public class InstanceofTest {public static void main(String[] args) {Father father = new Father();Child child = new Child();System.out.println(father instanceof Father); // 输出:trueSystem.out.println(child instanceof Father);  // 输出:trueSystem.out.println(father instanceof Child);  // 输出:falseSystem.out.println(child instanceof Child);   // 输出:rue}
}

若有不妥之处,恳请读者批评指正

这篇关于【Java】面向对象核心知识点(三),文章层次分明,内容精益求精,代码简单易懂的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/961382

相关文章

Java Stream流与使用操作指南

《JavaStream流与使用操作指南》Stream不是数据结构,而是一种高级的数据处理工具,允许你以声明式的方式处理数据集合,类似于SQL语句操作数据库,本文给大家介绍JavaStream流与使用... 目录一、什么是stream流二、创建stream流1.单列集合创建stream流2.双列集合创建str

springboot集成easypoi导出word换行处理过程

《springboot集成easypoi导出word换行处理过程》SpringBoot集成Easypoi导出Word时,换行符n失效显示为空格,解决方法包括生成段落或替换模板中n为回车,同时需确... 目录项目场景问题描述解决方案第一种:生成段落的方式第二种:替换模板的情况,换行符替换成回车总结项目场景s

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

SpringBoot中@Value注入静态变量方式

《SpringBoot中@Value注入静态变量方式》SpringBoot中静态变量无法直接用@Value注入,需通过setter方法,@Value(${})从属性文件获取值,@Value(#{})用... 目录项目场景解决方案注解说明1、@Value("${}")使用示例2、@Value("#{}"php

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF