您的位置:首页 > 其它

toString() equals() 方法 多态 转型 接口

2020-01-15 11:40 162 查看

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. 抽象类不能实例化(创建对象)
  3. 抽象方法必须被重写
  4. 抽象方法如果一旦被重写,后面可以按需重写

抽象类如何使用:
1)具体子类:重写所有父类中的抽象方法+按需新增
2)抽象子类:按需重写父类中的抽象方法+按需新增

接口:

是一个特殊的抽象类,使用interface定义接口

如果题目中有属性值,只能用父类来实现,如果都是方法功能,有限考虑使用接口

接口的优点:

  1. 接口可以多实现,而类只能单继承
  2. 接口可以定义规范
  3. 解耦: 降低耦合度(就是粘合性)
  4. 提高代码的复用性

工作中接口的作用:->功能的集合->抽象方法的集合

父接口->实现类->实现类实现一个接口,就拥有了接口中定义的能力

类去 实现接口 使用implements关键字

接口的定义:
①公共的静态的常量:
public static final 修饰符可以按需省略,默认public static final
②公共的抽象的方法:
public abstract 修饰符可以按需省略,默认public abstract

接口特点:

  1. 接口不能实例化(因为接口中有抽象方法)
  2. 一个类可以实现多个接口,但是只能继承一个父类
  3. 如果一个类既实现了多个接口,也继承了父类,需要先继承后实现
  4. 接口和类之间只能类实现接口
  5. 接口和接口之间,不能实现,只能继承,接口可以多继承接口,就拥有了每一接口中的功能

接口的使用:
①具体的实现类使用:重写所有的抽象方法+按需新增
②抽象的实现类:按需重写+按需新增

//具体实现类
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
  • 收藏
  • 分享
  • 文章举报
Heiko_O 发布了25 篇原创文章 · 获赞 25 · 访问量 277 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐