day08多态和object类

来源:互联网 发布:淘宝美工学费多少 编辑:程序博客网 时间:2024/06/08 02:03
多态:理解为事物存在的多种体现形态
人:男人,女人
动物:猫 狗
类(多个) 猫 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
原创粉丝点击