【Java基础总结】-类和对象的易错点

Java 学习笔记 《面向对象原理与语言》——第二章 类和对象的基本概念 面向对象的程序设计(Object-Oriented Programming, OOP)是一种现代软件开发方法,它将客观世界中的事物抽象成程序中的对象,以对象为中心来组织代码和数据。与传统的面向过程的程序设计方法不同,面向对象编程更加注重数据的封装、继承和多态性,从而提高了代码的可重用性、可维护性和可扩展性。在面向对象编程思想中,对象被认为是具有状态和行为的实体[4]。状态描述了对象的属性,而行为则定义了对象可以执行的操作。例如,我们可以将现实世界中的“汽车”看作一个对象。 阅读详情
  • 总结Java程序设计语言中方法参数的使用情况:

    • 一个方法不能修改一个基本数据类型的参数(即数值型和布尔型,在Java中只有基本类型不是对象)。当参数是传入一个数值或布尔值时,传入的参数和原数据基本类型参数是两份不同的拷贝,互不影响。
    • 一个方法可以改变一个对象参数的状态(如传入一个数组引用改变某一个数组元素值,或传入一个对象,改变其属性值。原因在于:方法得到的是对象引用的拷贝,对象引用及其他的拷贝同时引用同一个对象。但是注意: 当传入一个字符串对象引用时,由于string是final类型的,所有方法体中的修改相当于新创建了一个字符串对象,而不会改变原字符串变量的值)
    • 一个方法不能让对象参数引用一个新的对象,如示例代码:

      public static void swap(Employee x, Employee y){
          Employee temp = x;
          x = y;
          y = temp;
      }

      这个交换方法被swap(a,b)调用时,并不能将a对象和b对象交换,原因在于,方法结束时参数变量x和y被丢弃。原来的变量a和b仍然引用这个方法调用之前所引用的对象。

  • 总结调用构造器的具体步骤:
    1)所有数据域被初始化为默认值(0、false或null)。
    2)按照在类声明中出现的次序,依次执行所有域初始化语句和初始化快.(即按声明顺序执行静态块和静态语句)
    3)如果构造器第一行调用了第二个构造器,则执行第二个构造器主体。
    4)执行这个构造器的主体。

  • 总结域与局部变量主要不同点:
    必须明确地初始化方法中的局部变量。但是,如果没有初始化类中的域(即成员变量),将会被初始化为默认值(0、false或null)

    初始化域变量时,需注意 如果在编写一个类时没有编写构造器 ,那么系统就会提供一个无参数构造器。这个构造器将会为所有的实例域设置为默认值。于是,实例域中的数值型数据设置为0、布尔型数据设置为false、所有对象变量将设置为null。
    如果类中提供了至少一个构造器,但是没有提供无参数的构造器,则在构造对象时如果没有提供参数就会被视为不合法。因此,在构造一个类时,最好创建一个无参构造器。
    仅当类没有提供任何构造器的时候,系统才会提供一个默认的构造器。

  • 返回类型不是方法签名的一部分。也就是说,不能有两个名字相同、参数类型也相同却返回不同类型值的方法。

  • 继承类代码实例说明:

public class test {
    public static void main(String[] args) {

        // ****向上转型的注意点****

        // 向上直接转型,声明时的子类可以直接被更为抽象的父类引用
        // 声明为 什么类型,该对象就是什么类型,就算其引用的是子类的对象,该对象也只能调用声明的父类中拥有的方法体。
        // father fat = new son();
        // fat.fa();
        // fat.son(); //The method son() is undefined for the type father

        // ****强转的注意点****

        // 两个来自不同的类的对象,不存在向上转型的情况下,不可以互相强转。
        // 编译可以通过,但是会报运行时异常 java.lang.ClassCastException
        // father fat = new father();
        // son son = (son) fat; // father cannot be cast to son

        // 存在向上转型的情况下:
        // 原本是子类对象,后来向上转型之后,被父类引用后,再被强转为子类是可以的。可以正常运行!
        // father fat = new son();
        // son son = (son) fat;

        // 对于null对象强转,下面示例编译可以通过,但会报运行时空指针异常
        // ((son) null).so(); // java.lang.NullPointerException
    }
}

/*
 * 子类
 */
class son extends father {

    public son() {
        System.out.println("子类默认构造器!");
    }

    public son(int a) {
        System.out.println("子类带参构造器!");
    }

    public void test() {
        System.out.println("子类test方法!");
    }

    public void so() {
        System.out.println("子类独有的so方法!");
    }
}

/*
 * 父类
 */
class father {
    father() {
        System.out.println("父类默认构造器!");
    }

    father(int i) {
        System.out.println("父类带参构造器!");
    }

    void test() {
        System.out.println("父类test方法!");
    }

    void fa() {
        System.out.println("父类独有的fa方法!");
    }
}
  • 类型转换总结:

    • 只能在继承层次内进行类型转换。
    • 在将超类转换成子类之前,应该使用instance of进行检查。
    • 继承层次内的转换如:
      Object obj = new Employee("Harry Hacker",350000);
      Employee e = (Employee) obj;
  • 抽象类总结:

    • 为了提高程序的清晰度,包含一个或多个抽象方法的类本身必须被声明为抽象的。
    • 除了抽象方法外,抽象类还可以包含具体数据和具体方法。
    • 类即使不含抽象方法,也可以将类声明为抽象类。
    • 抽象类不能被实例化
    • 需要注意,可以定义一个抽象类的对象变量,但是它只能引用非抽象子类的对象。(就如同可以声明一个父类 引用子类对象一样——向上转型)
Java 学习笔记 《面向对象原理与语言》——第 3 章 类中的方法 程序运行时发生的非正常情况,会中断程序的正常执行流程。例如,除以零、文件找不到等。异常分类:必须在代码中显式处理 (try-catch 或 throws)。编译器强制检查。。忘记处理检查型异常会导致编译错误。不必显式处理。程序可以选择处理,也可以不处理,交给 JVM 默认处理。。运行时异常虽然编译时不报错,但运行时可能导致程序崩溃,需要理解其发生场景并进行预防或处理。比异常更严重的问题,通常是程序无法处理的系统级错误,例如。程序通常无法恢复,JVM 会终止程序。混淆两者的处理方式。 阅读详情

相关推荐

头歌(EduCoder)实训项目-Java面向对象-从“五花肉”到“无名粉”的类与对象实战

本文通过头歌(EduCoder)实训项目,生动讲解Java面向对象编程中的类与对象概念。从'五花肉'到'无名粉'的实战案例,详细介绍了类的定义、对象创建、构造方法、this关键字和static成员等核心知识点,帮助读者掌握Java面向对象编程的基本原理和实践技巧。

weixin_33491377的博客 217

JAVA_面向对象---必看易错点(一)

java面向对象零碎知识点,多看多记,循序渐进~

God_Xzg的博客 519

类和对象(一)

类是对象的模板 / 设计图,描述对象的属性(成员变量)和行为(成员方法)。java运行// 类名:大驼峰命名法// 成员变量(属性)修饰符 数据类型 变量名;// 成员方法(行为)修饰符 返回值类型 方法名(参数列表) {// 方法体java运行/*** 手机类:描述属性与行为*/// 成员变量(属性)// 品牌// 价格// 颜色// 成员方法(行为)System.out.println(brand + " 手机正在打电话");

Spri_ng的博客 320

Java中易错知识点整理

原理是这样的,不同的对象在底层都表示为二进制,在JavaScript中二进制前三位都为0的话会被判断为 obiect 类型,null 的二进制表示是全0,自然前三位也是0,所以执行 typeof 时会返回”object”。在写代码的过程中,常见的一种情况是需要某个整数类型变量增加 1 或减少 1,Java 提供了一种特殊的运算符,用于这种表达式,叫做。的,String类中每个会修改String值的方法,都会创建一个新的String对象,以包含修改后的字符串内容。

isGentleman的博客 320

ArcGIS基础:CAD数据转换为GIS数据(符号化显示、数据转换、线转面、空间连接)

1、符号化显示: CAD数据加载进来有很多列表,包含了点【point】、线【polyline】、面【polygon】、标注数据【Annotation】等数据,本次实验我们需要用到的是面数据,也就是.dwgPolygong格式的数据。如下图所示: 把数据加载进来,然后在2处打开属性表,查看CAD数据的属性表,打开后可以发现【layer】图层表示就是地块的用地性质,它就是符号化显示的依据。 我们在数据上右键【属性】,打开图层属性,找到【符号系统】,选择类别中的【唯一值】,然后在【值字段】下拉选择【layer】,

yuanYW7556的博客 2万+

A2B音频总线在智能座舱中的应用

车载A2B链路音频是智能座舱的核心功能,涵盖车载音响、语音识别、e-Call、消噪及回声消除等应用,随着汽车智能网联化的发展,对音频的开发要求也越来越高,需要加入更先进、功能丰富的信息娱乐功能以满足消费者的用户体验。但传统的模拟并行音频信号传输方式,难以在功能增加与整车轻量化(线缆的重量及成本减少)之间取得均衡。这时候就需要A2B音频总线了。A2B音频总线用于连接车辆中的音频设备,如麦克风(MIC)、功放(AMP)、多媒体主机(Head Unit)和T-BOX等。通过一条低成本的非屏蔽双绞线UTP,进行跨距

怿星科技的博客 3937

JAVA类和对象部分易错点总结 2020.7.6

JAVA类和对象部分易错点总结 2020.7.61.public类2.static类3.static类或方法内4.总结 1.public类 一个java文件可以有多个类,但是只能有一个public类。 如下图有三个类 ClassTest、Train、HighTrain,但是只能有一个类ClassTest属于public类,若给Train或HighTrain加上pulic修饰符,则会报错。 public class ClassTest { static double v = 145.8; publi

qq_37761176的博客 507

YOLOV8主干改进方法:C2f-Dual——DualConv轻量化双卷积设计(附改进代码)

DualConv是一种创新的卷积网络结构,旨在构建轻量级的深度神经网络。它通过结合3×3和1×1的卷积核处理相同的输入特征映射通道,优化了信息处理和特征提取。DualConv利用组卷积技术高效排列卷积滤波器,大大降低了计算成本和参数数量。

m0_74890428的博客 4704

JAVA学习——布尔类型变量和类型转换

JAVA学习——布尔类型变量和类型转换提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

weixin_44344209的博客 2379

AI时代敏捷开发新范式——意图驱动开发IDD

具体的功能代码、单元测试、集成测试用例,以及最终可运行的、支持PlantUML的Markdown转Word工具新版本。:业务方(如技术文档团队)反馈,现有的Markdown转Word工具在处理包含PlantUML代码块的文档时,无法正确生成图表,导致技术方案、架构图等关键信息丢失,严重影响了文档交付质量和团队效率。这不仅带来了交付周期显著缩短、资源效能倍增的可观收益,更深远的意义在于,它描绘了未来软件工业化、智能化的新图景:一个由精准意图驱动、AI自主执行、人类智慧引领的敏捷、高效、高质的新世界。

LiuJunjiang的专栏 563

多传感器融合SLAM指南:如何结合视觉与激光雷达提升建图精度

本文深入探讨了多传感器融合SLAM技术,详细解析了如何将视觉传感器与激光雷达(特别是3D激光雷达)进行深度融合以提升建图精度与鲁棒性。文章从传感器特性分析、数据同步标定、前端融合策略(松耦合与紧耦合)到后端优化与地图构建,提供了完整的实战指南,并重点介绍了V-LOAM等经典融合框架的核心思想,旨在帮助开发者构建适应复杂动态环境的高精度SLAM系统。

weixin_29056145的博客 538

java类与对象易错点(持续更新)

/2021/5/12 first update来源:how2j教程/ 如果提供了一个有参的构造方法同时又没有显式的提供一个无参的构造方法 那么默认的无参的构造方法,就“木有了“ public class Hero { String name; //姓名 float hp; //血量 float armor; //护甲 int moveSpeed; //移动速度 //有参的构造方法 //默认的无参的

jingmijiagongv1的博客 599

DDS信号发生器设计避坑指南:从AD9834配置到巴特沃斯滤波实战

本文详细解析了基于AD9834芯片的DDS信号发生器设计中的关键技术要点与常见陷阱,涵盖时钟源选择、寄存器配置时序、巴特沃斯滤波器设计等核心内容。针对中高频段信号质量优化,提供了实用的解决方案和代码示例,帮助工程师规避设计误区,提升信号发生器的性能和稳定性。

2y3u4i5o6p的博客 786

Java基础语法与易错点详解(入门必读)

System.out.println("和是:" + sum);✅ Java 基础并不难,关键在于多练习、多理解。简易计算器;学生成绩管理系统;控制台图形打印等。🧰 熟悉开发工具(如 IntelliJ IDEA、Eclipse),能提高效率。📚 多参考官方文档、调试源码,养成良好的编码习惯。如果你觉得本文有帮助,欢迎!👍✨后续将推出Java 面向对象、集合框架、异常处理、GUI等更多基础系列内容,敬请期待!作者:Liam_L1。

2305_79798088的博客 517

巨正则蒙特卡洛—甲烷和二氧化碳的竞争吸附GCMC

巨正则蒙特卡洛—甲烷和二氧化碳的竞争吸附GCMC

Rockyoung 8022

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

java中Calender类的详细用法(详解)

一、 如何创建 Calendar 对象 Calendar 是一个抽象类, 无法通过直接实例化得到对象. 因此, Calendar 提供了一个方法 getInstance,来获得一个Calendar对象, 得到的 Calendar 由当前时间初始化. 1 Calendar cal = Calendar.getInstance(); 二、 字段详解 Calendar 中 set 和 get ...

南 墙 4万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Java1 类与对象

面向对象变成:根据需要用到的对象在Java中设计对应的类,通过特征(属性)和作用(行为)来描述对象。public 返回值类型 方法名(参数类型 参数名,,){方法体...}1.定义属性:访问修饰符(public) 数据类型 属性名;(2)在主函数中,类里面的属性和方法必须通过对象调用。注意输入的数据类型是否与定义时所需的一致。类名 对象名 = new 类名();类:具有相同特征、作用的对象的集合。对象名.方法名(参数,,);对象名.属性名 = 值;对象:任一具体的事物。注:(1)要有主函数。

2501_92994883的博客 192

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

跨包子类访问protected权限:必考规则+易错点详解

摘要: Java中protected修饰符在跨包子类中的访问规则是核心考点,需牢记: 允许:子类对象可直接访问自己继承的父类protected成员(如属性/方法),视为自身成员使用。 禁止:子类对象不能通过父类实例(如new 父类().protected成员)访问父类protected成员,否则编译报错。 同包例外:同包下任何类访问protected成员无限制。 案例: 跨包子类Zi中,name(继承属性)可直接使用,但new Fu().name会报错。 同包子类则无此限制。 口诀:跨包子类“自用可,父用错

wentorrihi0818的博客 598

【头歌】Java 面向对象 - 类与对象 第4关类与对象练习

本任务要求为无名的粉创建Java类WuMingFen,包含三个属性:面码、粉的分量和是否带汤。需实现三种构造方法(全参数、两个参数、无参数)及check()方法用于输出属性值。无参构造默认创建酸辣面码、2两带汤的粉。测试时需验证三种构造方法的正确性,并注意包的使用(step4包)。易错点包括方法调用语法(需用对象.method())和this关键字的使用。附两道习题考察构造方法特性和方法重载概念。

Keyser_的博客 1010

Java连接各种数据库(sql server ,mysql,oracle)以及相关易错点

Java连接各种数据库(sql server ,mysql,oracle)以及相关易错点

吴名氏的博客 17万+

java 子类 复制_java子类复制父类

final在java中,final可以用来修饰类,方法和变量(成员变量或局部变量)。下面将对其详细介绍。1.1 修饰类当用final修饰类的时,表明该类不能被其他类所继承。当我们需要让一个类永远不被继承,此时就可以用final修饰,但要注意:final类中所有的成员方法都会隐式的定义为final方法。1.2 修饰方法使用final方法的原因主要有两个:(1) 把方法锁定,以防止继承类对其进行更改。...

weixin_42465051的博客 1573

基于Object类及包装类

规则 1:若返回true,则必须等于(反之不要求,即哈希码相同的对象不一定相等)。规则 2equals()需满足自反性为true)、对称性则)、传递性且则)、一致性(多次调用结果不变)。规则 3:使用代替直接,避免空指针异常。

shkkk_的博客 788

Java——包装类和List及ArrayList

javap-c(jdk 中一个反编译工具来查看下自动装箱和自动拆箱过程,并且看到这个过程是发生在编译期)(int index, E element) 将下标 index。种基本数据类型的包装类,在使用过程 中,会将类似 int。(int index, E element) 将 e。(int index) 获取下标 index。(Object o) 删除遇到的第一个 o。(int index) 删除 index。(Object o) 返回最后一个 o。(Object o) 返回第一个 o。

申俏雅的博客 1185

java二级易错点一

J ava二级考试易错点 1、整数在计算机中存储和运算通常采用的格式是·------补码 2、在操作系统中,将文件名转换为文件的存储地址的结构是------文件目录 【解析】一个计算机系统中有成千上万个文件,为了便于对文件进行存取和管理,计算机系统建立文件的索引,即文件名和物理位置之间的映射关系,这种文件的索引称为文件目录。 3、学校的每个社团都有一名团长,且一个同学可同时担任多个社团的团长,则实体团长和实体社团间的联系是-------一对多 【解析】一个社团只能有一名团长,一个同学可以同时担任多个社团的团

Miss_untalented的博客 1438

Java易错题

java易错题整合

qq_51184727的博客 2457
上一篇: 【Java基础总结】-算法题总结
下一篇: 【Java基础总结】-异常与泛型
gamedev˚
博客等级 码龄12年 280粉丝 293原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值