为了账号安全,请及时绑定邮箱和手机立即绑定

final关键字,protected关键字,抽象类,多态,方法重写

标签:
Java

final
最终的变量,常量,可以有两种形式给他赋值
第一种,定义变量的同时,初始化一个值
第二种,定义变量的时候,不给值,但是可以通过构造方法里面赋值
但是永远记住,final的成员变量,只能被赋值一次
基本数据类型作为形式参数,使用final关键字,来修饰 形式参数
形式参数引用的对象不能改变(值)
引用类型(数组,类,接口)作为形式参数,加final修饰形式参数
形式参数引用的对象不能再改变(地址值)
但是是可以改变对象的成员变量的值的
protected:
子类可以直接访问,父类本身也可以访问,同一包下,也可以访问,但是不同包之间是不能访问的
抽象类
被abstract类修饰的类,就是抽象类
抽象类的特点:
A:抽象类不一定有抽象方法,有抽象方法的类一定是抽象类
B:抽象类不能实例化,不能创建抽象类的对象
我们可以通过多态的形式,让抽象类的引用,指向子类对象
C:抽象类的子类
要么还是抽象类
要么是 具体类,并实现所有的抽象方法.
抽象类的构造方法,是让子类对象,来通过构造方法初始化父类的成员变量用的。
注意事项:
1:private 不能和abstract 一起修饰方法或者修饰类
2:final 不能和abstract 一起修饰方法或者修饰类
3:static 不能和abstract 一起修饰方法
具体方法

public void eat(){
System.out.println("Animal类型 eat()方法");
}

抽象方法,没有方法体(没有{}),并且 用abstract修饰
多态
概念:同一个事物,在不同条件下的不同表现形式

举例:生活中的例子 水,固态,液态,气态

java世界中的例子:

 Cat cat = new Cat();// 创建一个猫对象,猫是一只猫

 Pet pet = new Cat();// 猫是一种宠物

多态发生的三个条件
A:类与类之间要有继承关系
B:要有方法重写
C:要有父类引用指向子类对象

// 左边是父类 父类对象 = 右边的子类对象
// 父类引用 指向了子类对象
Pet pet = new Cat();

多态情况下,成员的访问特点
A:成员变量 编译看左边,运行看左边
编译的时候,看父类,也就是左边;父类中存在成员变量也可以赋值
B:成员方法 编译看左边,运行看右边
C:静态方法 编译看左边,运行看左边
多态情况下,如何访问子类的特有方法?

// 父类引用指向子类对象
Person p1 = new Student();// 向上转型
// 父类引用指向子类对象
p1 = new Teacher();
// 父类对象 强制类型转换 为 子类对象
Teacher t1 = (Teacher) p1;// 向下类型转换

强制类型转换的时候的注意事项
向下类型转换的异常
java.lang.ClassCastException:
生活中的例子:
假如:父类形容为一个大黑猫
我们把一个香蕉 放到桶里面,不能拿出一个苹果
方法重写
重写父类方法时,访问权限,只能大于等于父类的成员方法访问权限,不能比父类的成员方法的访问权限更低
@Override 告诉jvm,我们这个方法是重写,请帮我检查这个方法的生命是否正确,不正确就报错
@Override 这个叫java中的注解,注解和注释类比的学
注释是给人解释程序的
注解是给jvm解释程序的

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
软件工程师
手记
粉丝
51
获赞与收藏
617

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消