Java零基础学习-----面向对象(五)

多态的概念

 

多态的概念:

多态主要指同一种事物表现出来的多种形态。

例:

饮料:可乐,雪碧….

图形:正方形,三角形……

 

多态的语法格式:

父类类型 引用变量名=new 子类类型();

如:

Shape sr=new Rect();

Sr.show();

 

 

多态的特点:

1.当父类类型引用指向子类类型的对象时,父类类型的引用可以直接调用父类独有的方法。

2.当父类类型引用指向子类类型的对象时,父类类型的引用不可以直接调用子类独有的方法。

3.对于父子·类都有的非静态方法来说,编译阶段调用父类版本,运行阶段调用子类重写的版本(动态绑定)。

(静态的都是斜体)

4.对于父子类都有的静态方法来说,编译和运行阶段都是调用父类版本。

 

引用数据类型之间的转换

 

引用数据类型之间的转换方式有两种:自动类型转换和强制类型转换

1.自动类型转换主要指小类型向大类型的转换,也就是子类转换为父类,也叫做向上转型

2.强制类型转换主要指大类型向小类型的转换,也就是父类转为子类,也叫做向下转型或显式类型转换。

注意事项:

引用数据类型之间的转换必须发送在父子类之间,否则编译报错。

若强转并不是引用真正指向的数据类型时则编译通过,运行阶段发送类型转换异常。

为了避免上述错误的发送们应该在强转之前进行判断,格式如下:

IF(引用变量 instanceof 数据类型)

判断引用变量指向的对象是否为后面的数据类型

Java零基础学习-----面向对象(五)

 

多态的实际意义

多态的实际意义在于屏蔽不同子类的差异性,实现通用的编程带来不同的效果

 

抽象方法和抽象类的概念

 

抽象方法指不能具体实现的方法并且使用abstract关键字修饰,也就是没有方法体

具体格式如下:

访问权限 abstract 返回值类型 方法名(形参列表)

例:public abstract void cry();

 

抽象类的概念:

抽象类主要指不能具体实例化的类并且使用abstract关键字修饰,也就是不能创建对象。

 

抽象类和抽象方法的关系:

抽象类可以有成员变量,构造方法,成员方法;

抽象类中可以没有抽象方法,也可以有抽象方法;

拥有抽象方法的类必须是抽象类,因此真正意义上的抽象类应该是具有抽象方法并且使用abstract关键字修饰的类。

 

抽象类的实际意义:

1.抽象类的实际意义不在于创建对象而在于继承

2.当一个类继承抽象类后必须重写抽象方法,否则该类也变成抽象类,也就是抽象对子类具有强制性和规范性,因此叫做模板设计模式。

 

开发经验分享

 

多态是面向对象的第三个特征。

在以后的开发中推荐使用多态的格式,此时父类类型引用直接调用的所有方法一定是父类中拥有的方法,若以后更换子类时,只需要将new关键字后面的子类类型修改而其他地方无需改变就可以立即生效,从而提高了代码的可维护性和可扩展性。

缺点:父类引用不能直接调用子类独有的方法,若调用则需要强制类型转换

 

笔试考点

 

Private abstract double getLix();

private和abstract不能同时修饰一个方法。

final和abstart不能同时修饰一个方法。

Static和abstract不能同时修饰同一个方法。//?