Java基础针对自己薄弱环节总结04(面向对象多态)

来源:互联网 发布:百度股票数据接口api 编辑:程序博客网 时间:2024/05/22 16:46

一、多态的概念和前提


1、概念-什么是多态

对象在不同时刻表现出的不同的状态。

2、前提

A:要有继承关系或实现关系

B:要有方法重写或实现

C:要有父类引用指向子类对象,或父类接口指向子类对象

3、举例:

       狗是动物


二、多态的成员特点


1、成员变量 

编译看左边,运行看左边

Fu f=new Zi();

f.name;//调用的是父类的name

2、非静态成员方法

Fu f=new Zi();

f.show();//调用的是子类的show

3、产生以上的原因

方法有重写,变量没有重写


三、多态的弊端和好处


弊端:父类引用不能直接使用子类对象的特有功能。

解决方案: 向下转型(强转)

好处:增强了程序的扩展性和可维护行


四、转型过程中出现的问题


 java.lang.ClassCastException : 类型转换异常
 该异常产生的原因:类型不匹配
 一个父类的引用指向的是狗,要把这个父类的引用强制转换成猫,所以不行
 Animal animal = new Dog();
 Cat cat = (Cat)animal;//因为animal存储的是狗,强转成猫就会报错  
   

五、抽象类和抽象方法


1、抽象方法

只有方法声明,没有方法体的方法成为抽象方法,该方法用abstract修饰

2、抽象类

如果一个类中含有抽象方法,这个类就可以成为抽象类,该类被abstract修饰

3、什么时候定义抽象类

如果一个方法我们不确定他要做什么,就把这个方法定义成抽象的,那么这个类就被定义成抽象类

4、抽象类的基本特定

1)、抽象类抽象方法用abstract修饰

2)、有抽象方法的类一定是抽象类,抽象类中不一定有抽象方法

3)、抽象类不能被实例化

4)、如果一个类继承抽象类,要么本身是抽象类,要么必须实现抽象方法

5)、抽象类的作用

强制子类必须完成某种功能

6、抽象类的成员特点

1)、成员变量:可以常量,可以变量

2)、构造方法

    有构造方法,但是不能创建对象,只是用于子类访问父类数据时,对父类的成员进行初始化。

3)、成员方法

                 可以有抽象方法,也可以有非抽象方法


六、接口


1、概念

我们可以把接口看成一种特殊的抽象类,比抽象更抽象。因为它里面的方法都是抽象的,但注意接口不是类,我们只是把它看成类

2、接口的基本特点

1)、接口不能被实例化。

2)、接口中的方法:

          要么被子类重写。

          要么子类也是抽象类。

3、接口的成员特点

1)、成员变量:接口中只有常量

因为接口的成员变量有默认修饰符:public static final

推荐:永远自己给出修饰符。

2)、构造方法

没有构造方法//因为接口中的成员变量都被final修饰,定义的时候必须做初始化

任何类如果没有继承父类,那么这个类就继承自Object类。//所有类都直接或者间接的继承自Object类。Object类是所有类的超类

3)、成员方法:接口中的方法都是抽象的

          因为接口中的成员方法有默认修饰符:public abstract

          推荐:永远自己给出修饰符。

4)、接口的注意事项
      接口中不能有静态代码块,代码块,构造方法

4、接口与类,抽象类的关系

1)、抽象类和接口的关系(掌握)

         抽象类:

                   成员变量:可以是变量,也可以是常量。

                   构造方法:有构造方法。

                   成员方法:可以是抽象方法,也可以是非抽象方法。

         接口:

                   成员变量:只能是常量。

                              默认修饰符:public static final

                   成员方法:只能是抽象方法。

                              默认修饰符:public abstract

2)、类与接口的关系(掌握)

         类与类:

                   继承关系,只能单继承,可以多层继承。

         类与接口:

                   实现关系,可以单实现,也可以多实现。

                   还可以在继承一个类的同时,实现多个接口。

         接口与接口:

                   继承关系,可以单继承,也可以多继承。

3)、设计理念的区别

         抽象类被继承,这个类中定义的是整个继承体现的共性内容。

                   体现:is a

         接口被实现,这个接口中定义的是整个体现的扩展内容。

                   体现:like a


0 0
原创粉丝点击