Java中多态的基础介绍

1-1.多态的概述

代码当中的多态,就是父类引用指向子类对象的意思。安全

格式以下:对象

      父类名称 对象名 =  new 子类名称();接口

或者io

      接口名称 对象名 = new 实现类名称();编译

1-2.多态中成员变量和成员方法的使用

访问成员变量的两种方法:table

1).直接经过对象名访问成员变量,看等号左边(父类名称 对象名 =  new 子类名称();的等号左边)是谁,就优先用谁。ast

2).间接经过成员方法访问成员变量,看方法属于谁,就优先用谁,没有则向上找。class

成员方法的访问规则:new的是谁,就优先用谁,没有则向上找。
口诀:变量

成员方法:编译看左边,运行看右边。权限

成员变量:编译看左边,运行看左边。

1-3.使用多态的好处

不管右边new的时候,换成哪一个子类对象,等号左边的调用方法都不用改变。

1-4.对象的向上转型和向下转型

向上转型,就是多态写法。

格式:

      父类名称 对象名 = new  子类名称();

含义:右侧建立了一个子类对象,把它看成父类来看待使用,例如猫类属于动物类,因此猫的父类就是动物,把具体的一只猫看成动物来看待,就是向上转型。

在向上转型中,必定是安全的。

但向上转型有一个弊端:对象一旦向上转型了,就没法调用子类本来有的内容了。因此须要向下转型,来帮助访问子类本来有的内容。

格式:

      子类名称 对象名 = (子类名称) 父类对象;

含义:将父类对象还原成原本的子类对象。

注意事项:
1).向下转型时,必须保证对象原本建立的就是一只“猫”,才能成功向下转型。

2).若是对象建立时不是一只“猫”,如今非要向下转型成为“猫”,就会致使运行报错(编译不会报错,但在运行时会出现异常:Java.Class.ClassCastException,类转换异常)。

在这里,可使用instanceof关键字进行辅助啊判断是否是向下转型。

使用格式:

      对象 instanceof 类名称

这将会获得一个布尔值,也就是判断前面对象能不能当作后面类型的实例。

2-1.final关键字的概念以及四种用法

 final表明最终的,不可改变的。

常见的用法有:
1).用来修饰一个类。      2).用来修饰一个方法。

3).用来修饰一个局部变量。    4).用来修饰一个成员变量。

当用来修饰类时,格式:

      public final class 类名称{ //...}

含义:当前这个类不能有任何子类,但能够有父类。

注意:若是一个类是final类,那么其中全部的成员方法都没法进行覆盖重写。

当用来修饰成员方法时,格式:

      修饰符 final 返回值类型 方法名(参数类){方法体}

当final关键字用来修饰方法时,这个方法就是最终方法,也就是不可以被覆盖重写。

注意:
对于类和方法,final关键字和abstract关键字不能同时使用,由于二者本就相互矛盾。

当final关键字修饰局部变量时:
final修饰局部变量后,那么这个变量将不能进行修改,即不可变。

其中,这个“不可变”,对于基本类型来讲,是指变量当中的数值不可变。

           对于应用类型来讲,是指变量中的地址值不可变。

当final用来修饰成员变量时:

对成员变量,若是使用final关键字修饰,那么这个变量将不可变。

注意:

 1).因为成员变量具备默认值,因此在用了final关键字后必须对成员变量进行手动赋值,不会再给默认值。

2).对于final变量,要么直接赋值,要么使用构造方法赋值,两者选其一。

3).必须保证类当中全部的重载方法都最终会对final成员变量赋值。

2-2.Java中的四种权限修饰符

public > protected > (default) > private

  public protected (default) private
同一个类
同一个包 ×
不一样包子类 × ×
不一样包非子类 × × ×

 

注意:

1).对(default),该关键字不是default关键字,而是什么都不写。

2).表格中的√表示能够互相访问,×表示不能互相访问。

相关文章
相关标签/搜索