Android入门基础 Java基础学习笔记dya9 多态,抽象类和接口

来源:互联网 发布:秦义绝捏脸中文数据 编辑:程序博客网 时间:2024/05/16 06:10

1.多态

A.多态概述:事物存在的多种形态

B.多态前提:

a.要有继承关系

b.要有方法重写

c.要有父类引用指向子类对象。Animal a =  new Cat();a.eat();//猫吃鱼

2.多态中成员访问特点之成员变量

成员变量:编译看左边(父类),运行看左边(父类)

 


 

 

3.多态中成员访问特点之成员方法

成员方法:编译看左边(父类),运行看右边(子类)动态绑定


 

4.多态中成员访问特点之静态方法

静态方法:编译看左边(父类),运行看左边(子类)

静态和类相关,算不上重写,所以访问还是左边的

只有非静态的成员方法,编译看左边,运行看右边

5.超人故事解释成员访问特点

 



 

 

 

6.多态的好处:

a.提高了代码的维护性(继承保证)

b.提高了代码的扩展性(由多态保证)

开发中很少在创建对象的时候使用父类引用指向子类对象,直接创建子类对象更方便, 可以使用子类中的特有属性和方法。

当做参数的时候使用多态最好,因为扩展性强。

instanceof 判断前边的引用是否是后边的数据类型。

7.抽象类:用abstract修饰

abstract  class  类名{ }  public abstract void className();

抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者接口  

抽象类不能实例化  按照多态的方式,由具体的子类实例化

抽象类的子类要么是抽象类,要门重写抽象类中的所有抽象方法

8.抽象类的成员特点

成员变量:既可以是变量,也可以是常量,abstract不能修饰成员变量

构造方法:有,用于子类访问父类数据的初始化

抽象类成员方法的特性:

a.抽象方法:强制要求子类做的事情

b.费抽象方法:子类继承的事情,提高代码的复用性

抽象类中可以没有抽象方法,为了不让其他类创建本类对象,交给子类完成。

Abstractstatic不能共存,被abstract修饰的方法没有方法体,被static修饰的可以用类名.调用,但是类名.调用抽象方法没有意义。

Abstractfinal不能共存,被abstract修饰的方法强制子类重写,被final修饰的不忍子类重写,两者相互矛盾。

Abstractprivate不能共存,被abstract修饰的是为了让子类看到并且强制重写,被private修饰不让子类访问,两者矛盾。

9.接口的概述及其特点

接口概述:从狭义角度讲就是指Java中的interface,从广义的角度讲对外提供规则的都是接。

接口用关键字interface表示:interface 接口名{ }

类实现接口用implements表示:class 类名 implements 接口名 { }

接口不能被实例化,因为调用抽象方法没有意义,按照多态的方式来实例化。

接口的子类可以是抽象类(但是意义不大),可以死具体类(要重写接口内的所有抽象方法)

10.类与类,类与接口,接口与接口的关系

类与类:继承关系,只能单继承,可以多层继承

类与接口:实现关系,可以单思想,也可以多实现,并且还可以在继承一个类的同时实现多个接口。

接口与接口:继承关系,可以单继承,也可以多继承

11.抽象类和接口的区别

a.成员区别:

*抽象类:

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

构造方法:有

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

*接口:

成员变量:只可以常量

构造方法:无

成员方法:只可以抽象

b.设计理念区别:

抽象类:被继承体现的是”is a ”的关系,抽象类中定义的是该继承体系的共性功能

接口:被实现体系的是”like a” 的关系,接口中定义的的是该继承体系的扩展功能

 

12.接口成员特点

成员变量:只能是常量,并且是静态公共的

  默认修饰符:public static final (三个关键字无顺序)

构造方法:接口中无构造方法

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

  默认修饰符:public abstract

0 0