JavaSEDemo08

本文详细介绍了Java中的Object类,包括equals、hashCode和finalize方法的使用和重写。接着讨论了抽象类的概念、特点及抽象方法的语法。接口的语法、接口与抽象类的区别、接口中的常量和方法也进行了阐述。此外,还分享了IDEA中设置自动打印方法名字和参数的技巧,以及Java 8以上接口的新特性。最后提到了类继承父类并实现多个接口的语法以及接口继承的相关知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

本文是2021/03/30整理的笔记
赘述可能有点多,还请各位朋友耐心阅读
本人的内容和答案不一定是最好最正确的,欢迎各位朋友评论区指正改进

Object类的几个方法的使用或重写

equals

比较两个对象的虚地址

hashCode

  • 直接输出对象 对象调用的hashCode得到的哈希码值不同
public class Test {
    public static void main(String[] args) {
        User user = new User();
        System.out.println(user);//输出的是User类的所在路径以及十六进制哈希码
        System.out.println(user.hashCode());//输出的是十进制哈希码
    }
}

程序运行结果

User@66048bfd
1711574013
  • hashCode方法一般和equals方法一起重写

  • IDEA快速生成equals和hashCode方法的重写

  • 右键Generate(快捷键Alt+insert)打开图中的这一项

  • 在这里插入图片描述

  • 重写后的hashCode方法的执行过程
    在这里插入图片描述

finalize

  • 该方法一般不重写
  • 如果必须要重写,记得加上super.finalize();
  • 回收垃圾 积攒到一定程度时回收 根据不同电脑的内存定

抽象类

语法

  • 语法:权限修饰符 abstract class 类名{
    }

特点

  1. 使用abstract关键字修饰的类就是抽象类,没有这个关键字就是具体类。
  2. 如果一个类中有抽象方法,这个类必须定义成抽象类。
  3. 抽象类中既可以有抽象类,又可以有具体类
  4. 抽象类中可以没有抽象方法,只有具体方法。
  5. 抽象类不可以直接实例化,必须是其他实现类的父类。
  6. 实现类必须重写抽象类中的所有抽象方法
  7. 抽象类的具体方法子类可以不重写
  8. 抽象类的子类还可以是抽象类

抽象方法

语法

  • 语法: 权限修饰符 abstract 返回值类型 方法名称(参数列表);

特点

  1. 抽象方法没有方法体
  2. 构造方法 static final修饰的方法不可以是抽象方法
  3. 抽象方法只能存在于抽象类或接口中

接口

语法

  • 权限修饰符 interface 接口名{
    }

接口和抽象类的区别

  1. 属性: 抽象类中的属性没有限制,接口中的属性必须用public static final修饰
  2. 构造方法:抽象类中的构造方法可有可无,接口中没有构造方法
  3. 普通方法:抽象类中可以有普通方法,接口中不能有普通方法
  4. 子类:抽象类只能单一继承,接口可以多个继承

接口中的常量和方法

  • 常量必须是public static final
  • 方法必须是public abstract
  • 以上修饰符接口中可以不写,编译器自动给你加上

IDEA设置自动打印方法名字和方法参数

  • 按路径找到Files - Settings - Editor - Live Templates - output - soutm
    在这里插入图片描述
  1. 将下面的Template text:更改为System.out.println(" $ CLASS_NAME $ . $ METHOD_NAME $ ( $ ARG_NAME $ )方法");
  2. 点击Edit variables
    在这里插入图片描述
  3. 将ARG_NAME 一行的Expression选为MethodParameters() 将后面的勾选勾上
    在这里插入图片描述
  4. 效果(快捷键soutm)
    在这里插入图片描述

类继承一个父类实现多个接口

语法

权限修饰符 class 子类名称 extends 父类名称 implements 接口1,接口2,接口3…{
}

注意

子类必须重写父类和所有接口的所有抽象方法

接口继承

语法

权限修饰符 子接口名名称 extends 接口名称{
}

接口继承和类继承的比较

  • 接口可以同时继承多个接口,类一次只能继承一个。
  • 接口可以实现继承多个的原因:
  • 接口中都是抽象方法,不存在实现冲突,继承谁都可以。
  • 注意:继承时,如果方法签名(方法名称和参数列表)相同,返回值类型也要相同,否则会报错。

JDK8以上 接口中可以定义默认方法

语法

default 返回值类型 方法名称(参数列表){
方法体;
}

默认方法的调用位置

  • 接口的默认方法可以被实现类调用,可以被子接口调用
  • 注意:如果两个接口的默认方法重名,必须在子接口重写 可以通过接口名.super.方法名调用

小拓展:JDK9以上 接口中可以定义私有方法

在这里插入图片描述
编译没有报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

香鱼嫩虾

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

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

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

打赏作者

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

抵扣说明:

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

余额充值