day08多态和object类

多态:理解为事物存在的多种体现形态
人:男人,女人
动物:猫 狗
类(多个) 猫 x =new 猫(); 实体
动物 y =new 猫();
1.多态的体现
父类的引用指向了自己的子类对象
父类的引用可以接收自己的子类对象

2.多态的提前
必须类与类之间有关系,要么继承要么实现

3.多态的好处
多态大大提高了代码的扩展性

4.多态的弊处
提高了扩展性,但是只能使用父类的引用,访问父类的成员

5.多态的应用

6.多态的出现代码中的特点(多态使用的注意事项)

在多态中,成员函数(非静态)的特点(重写特性  覆盖)--动态绑定
在编译时期,参与引用型变量所属的类中是否有调用的方法,如果有,编译通过,如果没有,失败
在运行时期,参阅对象所属的类中是否有调用方法

简单总结,成员函数在多态调用时,编译看左边,运行看右边

在多态中,成员变量的特点
无论编译和运行,都看左边(引用型变量所属的类)

在多态中,静态成员函数特点--静态绑定
无论编译和运行,都看左边

class Fu
{
void method1()
{
System.out.println("fu method_1");
}
void method2()
{
System.out.println("fu method_2");
}
}

class Zi extends Fu
{
void method1()
{
System.out.println("zi method_1");
}
void method3()
{
System.out.println("zi method_3");
}
}
class  DuoTaiDemo2 
{
public static void main(String[] args) 
{
Fu f=new Zi();
f.method1();
f.method2();
//f.method3();

--------------------------------

/*
Object:是所有对象的直接后者间接父类,传说的上帝
该类中定义了所有对象都具备的功能

Object类中已经提供了对象是否相同的比较方法

如果自定义类也有比较相同的功能,没有必要重新定义
只要沿袭父类中的功能,建立自己特有的比较功能,这就是覆盖
*/

class Demo//extends Object
{
private int num;
Demo(int num)
{
this.num=num;
}
public boolean equals(Object obj)//Object obj=new Demo();
{
if (!(obj instanceof Demo))
return false;
Demo d=(Demo)obj;//向下转型
return this.num==d.num;
}

/*
public boolean compare(Demo d)
{
return this.num==d.num;
}
*/
}
class Person
{
}

class ObjectDemo 
{
public static void main(String[] args) 
{
Demo d1 =new Demo(4);
//Demo d2 =new Demo(4);
//Demo d3=d1;
//System.out.println(d1.equals(d2));
//System.out.println(d1==d2);//地址的比较相等
//System.out.println(d1==d3);
System.out.println(Integer.toHexString(d1.hashCode()));
System.out.println(d1.toString());
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值