代码改变世界

非专业码农 JAVA学习笔记 4 java继承和多态

2014-10-15 20:56  super2046  阅读(413)  评论(0编辑  收藏  举报

继承和多态

 

(一)继承的基本概念

子类 extends 父类(超类)(通过继承使用父类公用的变量,方法和属性等非private定义的)

(二)类的继承

1.派生子类-获取父类非private定义的方法属性和相关的变量

2.域的隐藏和继承

(1)域的继承-继承所有非私有化的域

(2)域的隐藏-定义跟父类相同的变量,父类的变量就会在子类隐藏,但,子类执行自己的方法还是用的是子类的变量,执行继承父类的方法才自动用上隐藏的域

3.方法的继承和覆盖

(1)方法的继承-继承父类非私有的方法

(2)方法的覆盖-不同于域的隐藏,子类定义跟父类相同的方法,在子类中就会把父类的覆盖,子类不再能使用父类的同名的方法

4.this和super

(1)this-当前对象的引用,代指当前对象

(2)super-指代父类的属性和方法

(三)多态-一种程序中同名的不同方法共存的情况

1.方法的覆盖实现多态

2.方法的重载实现多态(后面会学到重载的知识,姑且认为是重新加载并实现不同功能)

3.对象引用的多态:子类对象可以同时是父类的对象

(四)方法的重载-对自身已有同名方法的重新定义(比较重要)

(想了解清楚,详见今天转的博文吧)

(五)构造函数的重载-同一个类,多个同名但不同参数列表的构造函数

 

搞了这么多,内心问一句,这个有什么用?看一下百度一下觉得有意义了,教科书真的看不出什么…..

方法重载的主要好处就是,不用为了对不同的参数类型或参数个数,而写多个函数。多个函数用同一个名字,但参数表,即参数的个数或(和)数据类型可以不同,调用的时候,虽然方法名字相同,但根据参数表可以自动调用对应的函数。如果我们使用reflector去查看微软写的.net的基类库的话,我们可以发现他使用很多的方法重载,这样我们在调用的时候,就不需要记那么多的方法名称,而是知道了方法的功能就可以直接的给他传递不同的参数,编译器会明确的知道我们调用了哪一个方法。

(六)包及其使用

1.包的基本概念-个人理解为c#的命名空间(但差别还是较大的,包可以和目录有对应关系)

2.创建:Pakage 包名{class a1{} class a2{}};,命令方式:javac –d 位置 *.java(当前目录用-d.)

3.使用:import  包.类;可以通过CLASSPATH环境变量来指定包的存放位置

 

(七)接口问题-跟C#无多大差别

1.接口概述:类似类,定义了抽象方法和常量,形成属性集合,用于帮助实现多重继承

2.声明接口[public] interface 接口名 [extends 父接口列表]{常量;抽象方法;}

3.接口的实现:通过类来实现接口,class class1 extends ** implements 接口名{},其中implement是实现的声明