A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄泉 中级黑马   /  2014-4-2 19:01  /  762 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多态:
       
        猫 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));
        }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马