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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhoubinjian 金牌黑马   /  2016-3-28 02:22  /  319 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多态:
1.多态的体现:父类的引用指向了自己的子类对象
                父类的引用也可以接收自己的子类对象。
2.多态的前提:必须是类与类之间的关系,要么继承,要么实现。
                通常还有一个前提:存在覆盖。
3.多态的好处:
                多态的出现大大的提高了程序的扩展性。
4.多态的弊端:
                提高了扩展性,但是只能使用父类的引用访问父类中的成员。

在多态中,成员函数(非静态)的特点:(Fu f= new Zi();
在编译时期:参阅引用型变量所属的类中是否有调用的方法,如果有,编译通过,如果没有编译失败。
在运行时期:参阅对象所属的类中是否有调用方法。
简单点说:成员函数在被调用时:编译看左边,运行看右边

在多态中,成员变量的特点:(Fu f= new Zi();
无论编译和运行,都参考左边(引用型变量所属的类)。先找引用型变量中所属的的成员变量

在多态中,静态成员函数的特点:(Fu f= new Zi();
无论编译和运行,都参考左边(引用型变量所属的类)。运行时父类和子类都会加载进内存,静态函数先存在 ,是不需要对象的,

abstract class Student
{
        public abstract void study();
        public void sleep()
        {
                System.out.println("sleep");
        }

}
interface Abc
{
        public void sport();
       
}
class BesaStudent extends Student implements Abc
{
        public void study()
        {
                System.out.println("good study");
        }
        public void sport()
        {
                System.out.println("play footbore");
        }
}
class VaStudent extends Student
{
        public void study()
        {
                System.out.println("good good study");
        }
}


class Demo
{
        public static void main(String[] args)
        {
                funtion(new BesaStudent());
        }       
        public static void funtion(Student b)
                {
                        b.study();
                        b.sleep();
                        if(b instanceof BesaStudent)//关键词:instanceof 是判断引用类型
                        {
                        BesaStudent a =(BesaStudent)b;//向下转型Student 转BesaStudent,这样BesaStudent就可以调用本类特有的属性了
                        a.sport();
                        }
                }
       
}

0 个回复

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