黑马程序员_多态
来源:互联网 发布:中国保险网络大学app 编辑:程序博客网 时间:2024/04/28 22:48
------- android培训、java培训、期待与您交流! ----------
多态
多态的定义:
某一类事物的多种存在形态。
多态可能理解为事物的多种体现形态。
例如:
动物:猫,狗。
人:男人,女人。
多态的学习从以下四点来入手:
1.多态的体现
父类的引言指向了自己的子类对象,父类的引用也可以接受自己的子类对象。
2.多态的前提
必须是类与类之间有关系,要么是继承,要么实现;通常还有一个前提,那就是存在覆盖。
3.多态的好处
多态的出现大大的提高了程序的扩展性。
4 多态的应用
class Fu
{
static int num = 5;
void method1()
{
System.out.println("fu method_1");
}
void method2()
{
System.out.println("fu method_2");
}
static void method4()
{
System.out.println("fu method_4");
}
}
class Zi extends Fu
{
static int num = 8;
void method1()
{
System.out.println("zi method_1");
}
void method3()
{
System.out.println("zi method_3");
}
static void method4()
{
System.out.println("zi method_4");
}
}
class DuoTaiDemo4
{
public static void main(String[] args)
{
Fu f = new Zi();
System.out.println(f.num);
Zi z = new Zi();
System.out.println(z.num);
f.method1();
f.method2();
f.method3();
Fu f = new Zi();
System.out.println(f.num);
f.method4();
Zi z = new Zi();
z.method4();
在多态中成员函数的特点:
在编译时期:参阅引用型变量所属的类中是否有调用的方法。如果有,编译通过,如果没有编译失败。
在运行时期:参阅对象所属的类中是否有调用的方法。
简单总结就是:成员函数在多态调用时,编译看左边,运行看右边。
在多态中,成员变量的特点:
无论编译和运行,都参考左边(引用型变量所属的类)。
在多态中,静态成员函数的特点:
无论编译和运行,都参考做左边。
Objcet类
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;
}
public String toString()
{
return "demo:"+num;
}
}
class Person
{
}
class ObjectDemo
{
public static void main(String[] args)
{
Demo d1 = new Demo(4);
System.out.println(d1);//输出语句打印对象时,会自动调用对象的toString方法。打印对象的字符串表现形式。
Demo d2 = new Demo(7);
System.out.println(d2.toString());
Demo d2 = new Demo(5);
Class c = d1.getClass();
System.out.println(c.getName());
System.out.println(c.getName()+"@@"+Integer.toHexString(d1.hashCode()));
System.out.println(d1.toString());
Person p = new Person();
System.out.println(d1.equals(p));
}
}
-------------- android培训、java培训、期待与您交流! -----------------
- 黑马程序员_多态
- 黑马程序员_多态
- 黑马程序员_多态
- 黑马程序员_多态
- 黑马程序员_多态
- 黑马程序员_多态
- 黑马程序员_多态
- 黑马程序员_多态
- 黑马程序员_多态
- 黑马程序员_多态
- 黑马程序员_多态
- 黑马程序员_多态
- 黑马程序员_多态
- 黑马程序员_面向对象_多态
- 黑马程序员_面向对象_多态_内部类
- 黑马程序员_继承、接口、多态
- 黑马程序员——多态_实例
- 黑马程序员_基础、封装、继承、多态
- 源码查看工具之Source Insight 经典教程
- Android 启动过程详解
- Div与table的区别
- table和div的比较
- 【phpcms-v9】前台其它模块pc标签的调用说明
- 黑马程序员_多态
- 黑马程序员_面对对象的思想
- 黑马程序员_继承的理解
- 黑马程序员_多线程
- 黑马程序员_集合框架
- 黑马程序员_IO流的学习
- 黑马程序员_网络编程的总结
- 黑马程序员__GUI图行化界面
- 黑马程序员_银行业务调度系统