您的位置:首页 > 其它

包及多态

2014-03-11 19:38 141 查看
                                                        ------------------2013.12.19-------------------

一、包的访问权限

1)public:本类、同包、不同包子类、不同包且非子类

2)protected:本类、同包、不同包子类

3)缺省:本类、同包

4)private:本类

 

二、对类的访问权限只有public和缺省两种,但是可以写成内部类

1)创建内部类

2)先创建外部类,再用外部名去点new内部类

Student st = new Student();   //外部类

T t1 =  st.new T(); //第一种

T t2 = new Student().new T();  //第二种

 

三、什么是方法覆写?

1)子类中定义了与父类中同原型的方法,就称为方法的覆写

同原型方法:

·访问控制符:子类的要比父类的访问权限要大,或者是相同

·方法名相同

·返回值类型一样

·参数列表一样

 

四、方法覆写时所考虑的权限

 1)访问控制符:子类的要比父类的访问权限要大,或者是相同

 2)但这并不一定就会存在方法的覆写,比如说父类的访问权限为private

 

五、方法覆写的特点

1)方法重写必须发生在继承关系中,并且子类中出现父类中同原型的方法,

  那么认为子类的方法覆盖了父类的方法

2)子类的实例调用被覆盖的方法,将调用的是自己的方法,而父类的方法将被隐藏

3)如果子类想要访问父类中的方法,则必须使用super关键字来完成

   一般语法:super.方法名

      

 

六、关于方法的调用问题

1)如果不使用super调用,直接调用print()也可以,

    但是前提方法不能被覆写,否则会出现死循环

2)直接调用print()方法,相当于隐藏了一个this.print()方法,

    它会最先在本类中去找其方法,再依次从上至下去寻找

 

七、方法重写和方法重载的区别:

    区别点               重载                                                                          覆写

    

   单词               Overloading                                                             Overriding

 

 

   定义            只要方法名相同、参数列表不同、                      方法名称、参数的类型、

                     个数不同、在同一作用域中                                    返回值类型全部相同

  

                            对权限没有要求                                       被覆盖的方法不能拥有更严格的权限

  

   范围                发生在一个类中                                                       发生在继承类中

 

 

八、属性的覆盖

1)主要是指子类中声明了与父类同名的属性

2)一般很少去研究它, 因为其意义不大

 

五、引用转型

1)基类的引用指向派生类的对象

    Person per = new Student();

2)派生类的引用不可以指向基类的对象

    Student st = new Person(); 

六、多态

1)父类引用指向哪个子类的实例就是调用哪个类中的方法

2)父类的引用指向子类的对象时,调用的都是一个方法,但是却有不同的结果

3)多态分为静态多态和动态多态

七、多态的分类:

1)静态多态:方法重载

在编译器就能确定调用某个方法

2)动态多态:方法重写

·程序运行时才确定调用某个方法

3)条件

·必须要有继承的情况

·在继承中必须要有方法覆盖

·必须由基类的引用指向派生类的对象,并且通过基类的引用调用被覆盖的方法

 

 

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  多态 转型