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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiaobokk 中级黑马   /  2016-8-6 22:01  /  404 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 xiaobokk 于 2016-8-6 22:01 编辑

多态:
        多态的概述:
                        -->事物存在的多种形态
                        
        多态的前提:
                        a:要有继承关系
                        b:要有方法重写
                        c:要有父类的引用指向子类对象
                        
        多态中成员访问特点之成员变量:
                        成员变量:
                                编译看左边,运行看右边
                        成员方法:
                                编译看左边,运行看右边
                        静态方法:
                                编译看左边,运行看左边
        
        向上转型和向下转型的问题:
                        向上转型:
                                        由子类自动转型为父类
                        向下转型:
                                        由父类强行转型为子类
        
        多态的好处:
                        a:提高了代码的维护性(继承保证)
                        b:提高了代码的扩展性(有多态保证)
        多态的弊端:
                        不能使用子类的特有属性和行为

另附两端段代码
[Java] 纯文本查看 复制代码
class Fu {
        public void show() {
                System.out.println("fu show");
        }
}

class Zi extends Fu {
        public void show() {
                System.out.println("zi show");
        }

        public void method() {
                System.out.println("zi method");
        }
}

class Test1Demo {
        public static void main(String[] args) {
                Fu f = new Zi();
                //f.method();
                f.show();
        }
}


[Java] 纯文本查看 复制代码
class A {
        public void show() {
                show2();
        }
        public void show2() {
                System.out.println("我");
        }
}
class B extends A {
        public void show2() {
                System.out.println("爱");
        }
}
class C extends B {
        public void show() {
                super.show();
        }
        public void show2() {
                System.out.println("你");
        }
}
public class Test2DuoTai {
        public static void main(String[] args) {
                A a = new B();
                a.show();
                
                B b = new C();
                b.show();
        }
}


0 个回复

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