toString() equals() 方法 多态 转型 接口
Object类是老祖宗类,是Java中所有类的父类
toString()
是打印方法的返回值,toString()会打印对象的地址,如果想要打印对象的信息(所有成员属性的值),需要在子类中重写toString()方法
@Override public String toString() { return id+"-->"+name+"-->"+age; }
== :比较基本数据类型->数值 比较引用数据类型->地址
equals() 方法
是可以比较对象是否相等, equals()方法比较对象的内容(所有成员属性的值),而非比较对象的地址
public boolean equals(Object obj) { //增强程序健壮性的代码(if判断) if(this==obj){//this指代当前对象 return true; } //先判断obj是否是Person类型的一个对象,如果是返回true,如果不是返回false if(obj instanceof Person){ Person person=(Person)obj; //如果以后想要比较字符串是否相等时候,使用equals() 而不是使用== if(this.id==person.id && this.name.equals(person.name)&& this.age==person.age){ return true; } } return false; }
多态:
一种事物的多种形态|多种表现形式
多态的前提:类的继承|接口的实现
多态的使用:
①多态引用调用的时候,会调用子类中重写的方法
②如果没有重写,会调用父类的内容
②多态调用时,会对子类新增内容不可见
多态调用类中成员的特点:
成员变量: 编译运行看父类|左边|类型
(因为子类已经都已经了父类的成员属性,所以只看左边的父类就可以了)
成员方法: 编译看父类|左边|类型,运行看子类|右边|对象
(因为子类会有重新或者新增的方法,所以运行时看右边子类就可以了)
转型
向上转型: 自动类型提升 父类类型>子类类型
(小空间转到大空间,子类是小空间,父类是大空间,自右向左转型)
向下转型: 强制类型转换
小范围类型 引用 = (小范围类型)大范围类型数据; < 和equal ( ) 方法一样>
注意:
①父类的引用只能调用父类中有的内容,对子类新增内容不可见
②如果使用父类的引用多态形式调用时候,不能够调用子类新增的内容,想要调用,需要向下转型
引用 instanceof 类型 (强制类型转换时可以用到)
判断前面的引用是否是后面类型的对象|是否是后面类型子类的一个对象,如果是返回true,如果不是返回false
if(fu instanceof Me){//fu是父类的变量,Me是子类,me是子类的变量 Me me=(Me)fu;//类似于 int i=(int) l; l是long 的变量 me.play(); }else if(fu instanceof Xiong){//Xiong 是也是父类的子类 Xiong me=(Xiong)fu; me.play(); } /*类似于 if(l instanceof int){ int i=(int) l; } 但是实际不能这么用 */
抽象类: 被abstract修饰的类就是抽象类
抽象方法: 被abstract修饰的方法就是抽象方法
条件:①没有方法体 ②必须存在抽象类中
注意:
- 抽象类中可以存在抽象方法,也可以存在具体方法(有方法体的方法)
- 抽象类不能实例化(创建对象)
- 抽象方法必须被重写
- 抽象方法如果一旦被重写,后面可以按需重写
抽象类如何使用:
1)具体子类:重写所有父类中的抽象方法+按需新增
2)抽象子类:按需重写父类中的抽象方法+按需新增
接口:
是一个特殊的抽象类,使用interface定义接口
如果题目中有属性值,只能用父类来实现,如果都是方法功能,有限考虑使用接口
接口的优点:
- 接口可以多实现,而类只能单继承
- 接口可以定义规范
- 解耦: 降低耦合度(就是粘合性)
- 提高代码的复用性
工作中接口的作用:->功能的集合->抽象方法的集合
父接口->实现类->实现类实现一个接口,就拥有了接口中定义的能力
类去 实现接口 使用implements关键字
接口的定义:
①公共的静态的常量:
public static final 修饰符可以按需省略,默认public static final
②公共的抽象的方法:
public abstract 修饰符可以按需省略,默认public abstract
接口特点:
- 接口不能实例化(因为接口中有抽象方法)
- 一个类可以实现多个接口,但是只能继承一个父类
- 如果一个类既实现了多个接口,也继承了父类,需要先继承后实现
- 接口和类之间只能类实现接口
- 接口和接口之间,不能实现,只能继承,接口可以多继承接口,就拥有了每一接口中的功能
接口的使用:
①具体的实现类使用:重写所有的抽象方法+按需新增
②抽象的实现类:按需重写+按需新增
//具体实现类 class A extends Fu implements B{ @Override public void Hello() { System.out.println("你好..."); } } //抽象实现类 abstract class Zi extends Fu implements B{ // } //接口 interface InterfaceDemo{ //公共的静态的常量 int A=6; //公共的抽象的方法 void haha(); } interface InterfaceDemo2{} //接口B多实现其他接口,就拥有了每一接口中的功能 interface B extends InterfaceDemo,InterfaceDemo2{} class Fu{}
- 点赞 1
- 收藏
- 分享
- 文章举报
- 马士兵J2SE-第三章-面向对象-Object类:toString方法、equals方法、对象转型、抽象类抽象方法、final关键字、接口
- Java学习之面向对象(1.Object类,(1)toString方法,(2)equals方法,2.对象转型(casting),3.动态绑定与多态,4.抽象类(abstract),5.Final关键字)
- Java基础——权限修饰符、重写、super、final关键字、Object类、toString方法、equals、多态、转型cast、抽象abstract
- Java之面向对象例子(三) 多态,重写,重载,equals()方法和toString()方法的重写
- JAVA【类】析构器、重载与继承、方法的重写、自动转型、多态、方法与类的分类、接口继承
- .net学习之继承、里氏替换原则LSP、虚方法、多态、抽象类、Equals方法、接口、装箱拆箱、字符串
- .net学习之继承、里氏替换原则LSP、虚方法、多态、抽象类、Equals方法、接口、装箱拆箱、字符串
- 接口--多态--多态的转型以及方法的调用问题
- .net学习之继承、里氏替换原则LSP、虚方法、多态、抽象类、Equals方法、接口、装箱拆箱、字符串
- Lesson_for_java_day10--访问权限、static、对象转型、equals方法、toString方法、主函数
- 课时003:自动转型多态,方法分类,类分类,接口继承
- net学习之继承、里氏替换原则LSP、虚方法、多态、抽象类、Equals方法、接口、装箱拆箱、字符串(转)
- net学习之继承、里氏替换原则LSP、虚方法、多态、抽象类、Equals方法、接口、装箱拆箱、字符串(转)
- java 继承 方法重写 自动转型 多态 接口 抽象类
- Object的方法equals,hashCode,toString,clone。另外Comparable接口的方法
- java 继承 方法重写 自动转型 多态 接口 抽象类
- java——多态,向上转型,向下转型,抽象类抽象方法,工厂模式,接口与各种类的区别,内部类,静态内部类
- Java自学笔记(第八天)-多态-instanceof关键字-equals方法-toString方法-object类-class类-
- java对象通用方法之覆盖equals时请遵守通用约定、覆盖equals时总要覆盖hashCode、始终要覆盖toString、考虑实现Comparable接口
- (多态)Java向上转型之后调用子类的同名变量/方法的问题