Java学习与复习笔记--Day03

多态

extends继承和implements实现,是多态性的前提。代码当中体现多态:父类引用指向子类对象。

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

或者:接口名称 对象名=new 实现类名称();

成员变量不能覆盖重写。

访问成员变量的两种方式 

1.直接通过对象名称访问:看等号左边是谁,优先用谁,没有则向上找

 2.间接通过成员方法访问:看该方法属于谁,优先用谁,没有则向上找。子类没有覆盖重写,就是父;子类如果覆盖重写,就是子

在多态的代码当中,成员方法的访问规则是:

看new的是谁,就优先用谁,没有则向上找。

口诀:编译看左边,运行看右边。

对比一下:

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

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

多态的好处:无论等号右边new的时候换成哪个子类对象,等号左边调用方法都不会变化。

对象的向上转型:

对象的向上转型,其实就是多态写法:

格式:父类名称 对象名=new 子类名称();                                                  Animal animal=new Cat();

含义:右侧创建一个子类对象,把它当做父类来看待使用。                          创建了一只猫,当做动物看待,没问题。

注意事项:向上转型一定是安全的,从小范围,转向了大范围。

对象的向下转型:其实就是一个还原的动作。

格式:子类名称 对象名=(子类名称) 父类对象;

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

Animal animal=new Cat();//本来是猫,向上转型为动物

Cat cat=(Cat) animal;//本来是猫,已经被当做动物了,还原回来成为本来的猫

注意事项:

a.必须保证对象本来创建的时候,就是猫,才能向下转型为猫。

b.如果对象创建的时候本来不是猫,现在非要向下转型为猫就会报错。ClassCastException报错

类似于:int num=(int)10.0;//可以            int num=(int)10.5;//不可以,精度损失

如何才能知道一个父类引用的对象,本来是什么子类?

格式: 

对象  instanceof  类名称

这将会得到一个boolean值结构,也就是判断前面的对象能不能当做后面类型的实例。

final关键字概念和四种用法:

final关键字代表最终、不可改变的。

常见的四种用法:

1.可以用来修饰一个类

当final关键字用来修饰一个类的时候,格式:

 public final class 类名称{}

含义:当前这个类不能有任何子类

注意:一个类如果是final的,那么其中所有的成员方法都无法进行覆盖重写(因为没儿子)

2.可以用来修饰一个方法

当final关键字用来修饰一个方法的时候,这个方法就是最终方法,也就是不能被覆盖重写

格式: 修饰符 final 返回值类型 方法名称(参数列表){}

注意事项:对于类和方法来说,abstract和final关键字不能同时使用,因为矛盾,abstract一定要被覆盖重写,final不能被覆盖重写

3.还用来修饰一个局部变量

一旦使用final用来修饰局部变量,那么这个变量就不能进行更改,一次赋值,终生不变

对于基本类型来说,不可变说的是变量当中的数据不可改变

对于引用类型来说,不可改变说的是变量当中的地址值不可改变

final Student stu2=new Student("高圆圆");

// stu2=new Student("赵又廷");//错误写法,final的引用类型变量,其中的地址不可改变

stu2.setName("高圆圆圆圆");//正确写法,地址没改变,改变的是地址内的内容

4.还可以用来修饰一个成员变量

对于成员变量来说,如果使用final关键字修饰,那么这个变量也照样不可变。

1.由于成员变量具有默认值,所以用了final之后必须手动赋值,不会再给默认值了

2.对于final和成员变量,要么使用直接赋值,要么通过构造方法赋值

 3.必须保证类当中所有重载的构造方法,都最终会对final的成员变量进行赋值

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值