🙉专栏推荐:Java入门知识🙉
🙉 内容推荐:巧用抽象类与接口,打造高效Java程序(上)🙉
🐹今日诗词:登锋履刃,何妨马革裹尸🐹
⛳️点赞 ☀️收藏⭐️关注💬卑微小博主🙏
⛳️点赞 ☀️收藏⭐️关注💬卑微小博主🙏
🌸思维导图🌸
🌸一.多接口🌸
💬前面我们了解类与类之间是单继承关系 , Java不支持多继承
➡️ 但是一个类可以有多个接口,可以通过接口模拟实现多继承
🍺1.多接口语法🍺
💬举例: class Dog extends Animal implements Running, Swimming
➡️解释: 狗类继承了动物类, 并且实现(implements)了跑(Running) 和 游泳(Swimming)
两个接口, 实现多个接口中间用逗号隔开
⬇️详情看下图⬇️
🍺2.接口间的继承🍺
💧(1). 语法
💬举例: interface Action extends Running, Swimming
➡️解释: 动作接口(Action)继承了跑(Running) 和 游泳(Swimming) 两个接口
⬇️详情看下图⬇️
💧(2). Clonable接口
💬这是Java内置的接口, 用途非常广泛。
➡️Clonable接口里面有clone方法
➡️clone方法作用: 对 对象进行拷贝
⬇️使用方法⬇️
package Test; import java.util.Arrays; class Person implements Cloneable { public String name; //Person类,含有姓名、年龄,并且实现了Clonable接口 public int age; public Person (String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } @Override //Clonable接口含有clone方法, 需要重写,通过super调用 protected Object clone() throws CloneNotSupportedException { return super.clone(); //throw CloneNotSupportedException 是不支持克隆异常 } } public class test { //处理这个异常只需要在main函数后面延伸就可以,表示声明异常 public static void main(String[] args) throws CloneNotSupportedException { Person person1 = new Person("空白",18); Person person2 = (Person) person1.clone(); //因为clone方法返回类型是object类,所以需要进行强转 System.out.println(person1); System.out.println(person2); } }
💧(3). 克隆不支持异常
throws CloneNotSupportedException: 克隆不支持异常,💬差个眼后面我们另起炉灶叙。
出现这个异常的原因: 这是一个检查性异常,调用clone方法需要实现Clonable接口,如果没有实现接口或者重写接口方法导致检查不通过,就会出现异常。
解决方法: Java异常处理规范,将这个异常声明出来就可以了
💧(4).浅拷贝和深拷贝
⬇️我们看下面这串代码⬇️
⬇️运行结果⬇️
➡️这种情况就是浅拷贝,此时二者的money指向同一个地方
➡️相反,深拷贝不仅将name和money拷贝,而且把money指向的内容也拷贝了一份
⬇️深拷贝的实现⬇️
🌸二.抽象类和接口的区别🌸
🌸三.Object类🌸
🍁1.特点🍁
💬Object类是所有类的父类,任何类都默认继承Object类。
🍁2.Object类方法🍁
💬既然是最高类,里面总会有一些好用的方法,这些方法基本都需要我们去重写。
⬇️下面我们来看一看⬇️
🍷(1).toString方法
➡️作用: 将对象的内容以字符串的形式打印出来
➡️语法: 方法名.toString() 即可调用toString方法
➡️注意: 一般需要重写Object的toString方法
⬇️为什么需要重写呢?⬇️
🍷(3). 重写toString方法
package Test; import java.util.Arrays; import java.util.Scanner; class Person { String name; int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { //重写toString方法,将name和age同时打印出来 return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } } public class test { public static void main(String[] args) { Person person = new Person("张三",10); System.out.println(person.toString()); } }
🍷(4). equals方法
➡️作用: 比较两个对象是否相等
➡️语法: 对象一.equals(对象二)
➡️注意: equals一般也需要重写
⬇️我们来看看equals底层代码⬇️
🍷(5). 重写equals方法
⬇️代码下面有图片解析⬇️
package Test; import java.util.Arrays; import java.util.Objects; import java.util.Scanner; class Person { String name; int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public boolean equals(Object obj) { if (obj == null) { //空指针直接返回false return false ; } if(this == obj) { //二者地址相同 return true ; } if (!(obj instanceof Person)) { //如果obj不能转成Person类, return false; // 而现在要和Person类比较,不是Person类,那二者肯定就不相等了 } Person person = (Person) obj; //转成Person类之后进行比较 return (this.name.equals(person.name) && this.age == person.age); //这里调用的是String里的equals方法 } } public class test { public static void main(String[] args) { Person person1 = new Person("张三",10); Person person2 = new Person("张三",10); System.out.println(person1.equals(person2)); } }
🌸四.结语+美图分享🌸
✨🎆谢谢你的阅读和耐心!祝愿你在编程的道路上取得更多的成功与喜悦!"🎆✨🎄
⭐️点赞收藏加关注,学习知识不迷路⭐️
🎉✔️💪🎉✔️💪🎉✔️💪🎉✔️💪🎉
👍😏⛳️点赞 ☀️收藏⭐️关注😏👍
👍😏⛳️点赞 ☀️收藏⭐️关注😏👍
👍😏⛳️点赞 ☀️收藏⭐️关注😏👍
🙆♂️🙆♂️🙆♂️🙆♂️🙆♂️🙆♂️🙆♂️🙆♂️🙆♂️🙆♂️🙆♂️🙆♂️🙆♂️