posts - 6,  comments - 8,  trackbacks - 0

一、面向对象的多态性
多态定义:
1.多态性是指“多种形式”,“一个对外接口,多个内在实现方法”。
2.当系统A访问系统B的服务时,系统B可以通过多种实现方式来提供服务,而这一切对系统A是透明的。运用了动态绑定机制。
3.父类的某个方法被其子类重写时,可以产生自己的行为。
4.一个对象变量可以指向多种实际类型的现象;发送消息给某个对象,让该对象自行决定响应何种行为。

作用:实现接口和实现分离,有利于扩展和维护

二、对象的类型转换

1.子类对象可以自动转换成父类
2.父类转换成子类必须使用强制转换(可编译,不可运行
3.instanceof操作符:判断一个类是否实现了某个接口,也可以用来判断一个实例对象是否属于一个类。作用是测试它左边的兑现是否是它右边的类的实例

三、方法的重载Overload
如果类的方法(包括从父类中继承的方法),同时存在一个以上的同名成员方法,只要它们的参数列表(数据类型,个数,顺序)不同,即一个方法是另一个方法的重载方法


四、方法的重写Overrite,也叫覆盖
①如果子类的方法与父类中被子类访问(继承)的方法具有相同的方法名称、参数列表和返回类型,即子类的方法重写了父类的方法
    总结      如果子类方法重写了父类的方法那么必须保持方法名称、参数列表、返回类型必须一致
②如果在子类中想调用父类中的那个被覆盖的方法,我们可以用super方法的格式。
③覆盖方法时,不能使用比父类中被覆盖的方法更严格的访问权限,父类方法用public子类次方法不能用private
④父类的非静态方法不能被子类重写为静态方法
⑤父类的静态方法不能被子类重写为非静态方法;
⑥子类隐藏了父类的静态方法,不能重写父类的静态方法
隐藏的区别:JVM把静态方法和所属的类绑定,实例方法和所属的实例绑定
⑦父类的私有方法不能被子类重写继承
五、抽象类与接口专题
Java中可以定义一些不含方法体的方法,它的方法体的实现交给该类的子类根据自己情况取实现,这样方法就是抽象方法,它含抽象方法的类就叫抽象类。

abstract
①由abstract修饰的方法叫抽象方法;由abstract修饰的类叫抽象类
②抽象方法必须声明在 抽象类中
③抽象方法语法:
abstract type method_name(parameter_list);
abstract 返回值类型 抽象方法(参数列表);
④声明抽象类语法:abstract class{}
⑤使用:父类中的某些抽象不包含任何逻辑,并需要在子类中重写,子类提供这种抽象方法的实现细节
父类的抽象方法可以被子类重写

如何理解多态
1.定义
2.作用
实现接口和实现分离,有利于扩展和维护
3.原理
类的类型转换一致,JVM的动态绑定一致,运用这种机制,可以提高系统的松耦合性
4.实现方式
重写,重载
5.案例

重写的十二条规则
1 子类从夫类继承的方法
2 具有相同的方法名称
3 参数列表相同
4 返回值类型一致
5 不能降低继承发放的访问权限
6 父类的静态方法不能被子类重写为非静态方法
7 父类的非静态方法不能被子类重写为静态方法
8 子类隐藏了父类的静态方法,不能重写父类的静态方法
9  JVM把静态的方法和所属的类绑定,把实例对象和所属的实例绑定
10 父类的私有方法不能被子类重写
11 父类的非抽象方法可以被子类重写为向后想方法
12 父类的抽象方法可以被子类重写为非抽象方法或是抽象方法

案例如下:

1public abstract class AbstracTest{
2     public AbstractTest(){
3        System.out.println("AbstractTest is going");
4     }

5     public void run1(){
6        System.out.println("run1 is going");
7     }

8     abstract void run2();
9}
接口(interface)
如果一个抽象类中的所有方法都是抽象的,可以用接口定义。
接口是抽象方法和常量值的定义的集合,从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有方法的实现。
①接口就是某个事物对外提供的一些功能的声明;
②可以利用接口实现多态,同时接口也弥补了java单一继承的弱点
③使用接口声明方法或常量,接口中的方法只能声明,不能是具体的实现。
④使用Interface关键字定义接口,案例如下
 1 interface Runner{
 2   int ID=1;
 3   void run();
 4}

 5interface Animal extends Runner{
 6    void breathe();
 7}

 8class Fish implements Animal{
 9    public void run(){
10       System.out.println("fish is swimming");
11    }

12    public void breathe(){
13      System.out.println("fish is bubbing");
14    }

15}

面向对象设计的一个最核心的原则OCP(Open-Closed-Principle)
OCP---Open,对扩展开发;Close,对修改关闭。
posted on 2010-03-19 10:36 张贝贝 阅读(138) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: