JAVA学习笔记(三)

 

JavaBean的基本需求

 

属性:private Type ***

提供属性的存取方法

取方法命名:get***

存方法命名:set***

提供缺省(无参)的构造器

 

 继承

 

Java不能多重继承,可以多层继承,Java.lang.Object类是所有类的根

 

继承类和超类直接应该存在一种 is-a的关系,即继承类是超类的一种;

父类引用指向子雷对象时,如果子类重写了父类方法,那么调用的是子类的方法;

类里只能包含成员变量和成员函数;

 

关于父类引用指向子类对象()

1、如果想实现多态,那么必须有三个条件:父类引用、子类对象、方法覆盖;

2、没有方法覆盖,那只能解释为父类引用去访问一个子类的方法,当然父类引用没有这么大范围的权限;

PS:多态实际上是一种机制,在编译时刻会生成一张虚拟表,来记录 所有覆盖的方法,没有被覆盖的方法是不会记录到这张表的,若一个父类引用调用了没有覆盖的子类方法,那么是不符合该表的,编译时会报错。在执行程序的时候,虚拟机会去这张虚拟表中找覆盖的方法,比如引用中实际上存在的是一个子类对象引用,那么就会找子类中的相应的覆盖的方法来执行。

 

覆盖、重载、多态

 

上边已经提到了这几个概念,现在再进一步的说说;

一、覆盖

1、覆盖方法必须有和被覆盖的方法具有相同的方法名称,参数列表和返回类型;

2、如果在子类中调用父类中被覆盖的方法用super

3、覆盖方法时,不能使用比父类中被覆盖的方法更严格的访问权限;

4、只有存在继承才能有覆盖这个概念;

 

//临时想到一点:构造函数只能在构造函数中调用;

 

二、重载

     只能通过参数个数,参数类型,参数位置来区分,不能通过返回类型区分;

     作用:

          1、同名函数,实现多个功能;

          2、因为构造函数必须与类名同名,通过重载实现实例化不同功能的对象(这句话表达的不太明白,以后有合适的说法再改)

 

三、多态

     多态提供了另一个层面上的接口与实现的分离,也就是把做什么和怎么做分开来,多态不仅能改善代码的结构,提高其可读性,而且能让你创建可扩展的程序。

     

     向上转型(upcasting)

     动态绑定(dynamic binding)

     

     向上转型会狭化接口

     

     编译时、检查引用所指的方法;

     运行时、实际调用的是子类对象所指的方法;

     

 

 

posted @ 2008-07-21 23:00  李彪  阅读(169)  评论(0编辑  收藏  举报