JavaSEDemo08 野性酷女 2021-09-25 06:22 238阅读 0赞 ### 文章目录 ### * 简介 * Object类的几个方法的使用或重写 * * equals * hashCode * finalize * 抽象类 * * 语法 * 特点 * 抽象方法 * * 语法 * 特点 * 接口 * * 语法 * 接口和抽象类的区别 * 接口中的常量和方法 * IDEA设置自动打印方法名字和方法参数 * 类继承一个父类实现多个接口 * * 语法 * 注意 * 接口继承 * * 语法 * 接口继承和类继承的比较 * JDK8以上 接口中可以定义默认方法 * * 语法 * 默认方法的调用位置 * 小拓展:JDK9以上 接口中可以定义私有方法 # 简介 # 本文是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)打开图中的这一项 * ![在这里插入图片描述][2021033022261439.png_pic_center] * 重写后的hashCode方法的执行过程 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h5cGVydGV4dDEyMw_size_16_color_FFFFFF_t_70_pic_center] ## 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 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h5cGVydGV4dDEyMw_size_16_color_FFFFFF_t_70_pic_center 1] 1. 将下面的Template text:更改为System.out.println(" $ CLASS\_NAME $ . $ METHOD\_NAME $ ( $ ARG\_NAME $ )方法"); 2. 点击Edit variables ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h5cGVydGV4dDEyMw_size_16_color_FFFFFF_t_70_pic_center 2] 3. 将ARG\_NAME 一行的Expression选为MethodParameters() 将后面的勾选勾上 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h5cGVydGV4dDEyMw_size_16_color_FFFFFF_t_70_pic_center 3] 4. 效果(快捷键soutm) ![在这里插入图片描述][20210330224402141.png_pic_center] # 类继承一个父类实现多个接口 # ## 语法 ## 权限修饰符 class 子类名称 extends 父类名称 implements 接口1,接口2,接口3…\{ \} ## 注意 ## 子类必须重写父类和所有接口的所有抽象方法 # 接口继承 # ## 语法 ## 权限修饰符 子接口名名称 extends 接口名称\{ \} ## 接口继承和类继承的比较 ## * 接口可以同时继承多个接口,类一次只能继承一个。 * 接口可以实现继承多个的原因: * 接口中都是抽象方法,不存在实现冲突,继承谁都可以。 * 注意:继承时,如果方法签名(方法名称和参数列表)相同,返回值类型也要相同,否则会报错。 # JDK8以上 接口中可以定义默认方法 # ## 语法 ## default 返回值类型 方法名称(参数列表)\{ 方法体; \} ## 默认方法的调用位置 ## * 接口的默认方法可以被实现类调用,可以被子接口调用 * 注意:如果两个接口的默认方法重名,必须在子接口重写 可以通过接口名.super.方法名调用 ## 小拓展:JDK9以上 接口中可以定义私有方法 ## ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h5cGVydGV4dDEyMw_size_16_color_FFFFFF_t_70_pic_center 4] 编译没有报错 [2021033022261439.png_pic_center]: /images/20210923/31e43535e3e0405bb2475f74bb886a15.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h5cGVydGV4dDEyMw_size_16_color_FFFFFF_t_70_pic_center]: /images/20210923/90e7d6218ff64b2aacafe1b95413c5ba.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h5cGVydGV4dDEyMw_size_16_color_FFFFFF_t_70_pic_center 1]: /images/20210923/5b83b6549b3e4c159aa418fdb74cfde1.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h5cGVydGV4dDEyMw_size_16_color_FFFFFF_t_70_pic_center 2]: /images/20210923/07bb1a9a82104a29a869b45ee994bb64.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h5cGVydGV4dDEyMw_size_16_color_FFFFFF_t_70_pic_center 3]: /images/20210923/a77caf6a52fd4214b505b0030dc92f4c.png [20210330224402141.png_pic_center]: /images/20210923/01e3e1ff97934abaaa5f59256633bd98.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h5cGVydGV4dDEyMw_size_16_color_FFFFFF_t_70_pic_center 4]: /images/20210923/da35248202164e4da07c1d48578d4147.png
相关 JavaSEDemo29IO流 文章目录 简介 练习题 练习1 练习2 练习3 创建文件夹 输入流和输出流 字节流和字符流 r囧r小猫/ 2021年09月25日 08:04/ 0 赞/ 265 阅读
相关 JavaSEDemo23集合 文章目录 简介 树 树删除元素 树的先序 中序 后续遍历 集合 Collection接口 List接口 秒速五厘米/ 2021年09月25日 07:46/ 0 赞/ 229 阅读
相关 JavaSEDemo09 文章目录 简介 练习题目:统计字符串中不同字符的个数 代码示例 程序运行结果 final关键字 final关键字修 谁践踏了优雅/ 2021年09月25日 06:22/ 0 赞/ 250 阅读
相关 JavaSEDemo08 文章目录 简介 Object类的几个方法的使用或重写 equals hashCode finalize 抽象类 野性酷女/ 2021年09月25日 06:22/ 0 赞/ 239 阅读
相关 JavaSEDemo07 文章目录 简介 练习题:(多态)写一个函数,接收一个图形作为参数,打印出该图形的周长和面积 题目分析 代码示例 刺骨的言语ヽ痛彻心扉/ 2021年09月25日 06:18/ 0 赞/ 210 阅读
相关 JavaSEDemo06 文章目录 简介 显示继承与隐式继承 继承的重点 继承与构造方法 继承的优点和缺点 final关键字 多重继承时构造方法的执行情况 清疚/ 2021年09月25日 06:02/ 0 赞/ 240 阅读
相关 JavaSEDemo05 文章目录 简介 void方法中return语句的使用规范 可变API与不可变API 数据交换与方法传参 为什么不能用返回值类型来判断方法是否 比眉伴天荒/ 2021年09月25日 05:58/ 0 赞/ 279 阅读
还没有评论,来说两句吧...