多态:
猫 extends 动物
动物 x = new 猫(); 向上转型-类型提升
猫 y = 猫(x); 向下转型-强制转换
instanceof: 判断某一个类型引用指向的对象到底符合什么类型
if (x instanceof 猫) x是不是猫这个类型
{
猫 y = (猫)x;
}
------------------------------------------------------------
Fu
{
void 1(){fu_1};
void 2(){fu_2};
}
Zi extends Fu
{
void 1(){zi_1}
void 3(){zi_3}
}
Fu f = new Zi()
f.1(); 结果是 zi_1
f.2(); 结果是 fu_2
f.3(); 编译失败,Fu类中没有 3 方法。
总结(非静态):成员函数在多态调用时,编译看左边,运行看右边
总结(静态):无论编译和运行,都参考左边
总结(成员变量):无论编译和运行,都参考左边(引用型变量所属的类)
------------------------------------------------------------
/*
多态-电脑实例
*/
interface IPC
{
public abstract void daKai();
public abstract void guanBi();
}
class ZhuBan
{
public void daKai()
{
System.out.println("连接电源");
}
public void kuoZhan(IPC p)
{
p.daKai();
p.guanBi();
}
}
class ShengKa implements IPC
{
public void daKai()
{
System.out.println("声卡打开");
}
public void guanBi()
{
System.out.println("声卡关闭");
}
}
class DianNao
{
public static void main(String[] args)
{
ZhuBan a = new ZhuBan();
a.daKai();
a.kuoZhan(new ShengKa());
}
}
------------------------------------------------------------
多态-数据库实例
interface User
{
public abstract void arr();
public abstract void delete();
}
class JDBC extends User
{
public void add(User user)
{
1.连接数据库
2.使用sql添加语句、添加数据
3.关闭数据库
}
public void delete(User user)
{
1.连接数据库
2.使用sql删除语句、添加数据
3.关闭数据库
}
}
class Hibernate extends User
{
public void add(User user)
{
1.连接数据库
2.使用sql添加语句、添加数据
3.关闭数据库
}
public void delete(User user)
{
1.连接数据库
2.使用sql删除语句、删除数据
3.关闭数据库
}
}
class ShuJuKu
{
public static void main(String[] args)
{
USer a = new JDBC();
a.add(user);
a.delete(user);
}
}
------------------------------------------------------------
Object-上帝类
class Demo
{
private int num;
Demo(int num)
{
this.num = num;
}
public boolean equals(Object obj)// Objcet obj = new Demo(4);
{
if (!(obj instanceof Demo))
return false;
Demo a = (Demo)obj;
return this.num == a.num;
}
}
class A
{
}
class ObjectDemo
{
public static void main(String[] args)
{
Demo a1 = new Demo(4);
Demo a2 = new Demo(4);
A a = new A();
System.out.println(a1.equals(a));
}
}
|
|