第5章-第5节-Java面向对象的多态以及类库的使用方式、final
1、final关键字
解释:最终的、到头了
修饰的领域:
1)、修饰类
称为:最终类
特点:该类不可以被别的类继承
2)、修饰方法
称为:最终方法
特点:该方法不可以被子类重写
3)、修饰变量
称为:最终变量
特点:该变量的值不可变 ==> 理解:就是常量了
【注意】:常量的命名
常量名也是标识符之一,满足Java的规则和规范
规范如下:
?? ?所有字母全部大写,如果时候多个单词组成,中间使用_进行间隔
?? ?例如:
?? ??? ?HELLO_WORLD_JAVA
2、面向对象特性之多态性
多态:一种事物的多种形态
生活层面:...
程序层面:
前提条件:
?? ?对应表现一 ==> 需要具备继承关系;
?? ?对应表现二 ==> 需要具备实现关系;
两种表现:
?? ?表现一:父类型的引用 指向 子类型的对象;
?? ?表现二:接口类型的引用 指向 实现类的对象;
搭建场景
class Fruit{
?? ?//...
}
class Apple extends Fruit{
?? ?//...?? ?
}
class Orange extends Fruit{
?? ?//...
}
//Apple a = new Apple();?? ?//本态引用
Fruit f = new Apple();?? ??? ?//多态引用?? ?此处发生多态
f.类的成员?? ??? ?//编译都是强调Fruit怎么样怎么样,但是执行的都是Apple的具体展示
Fruit f2 = new Orange();?? ?//多态引用?? ?此处发生多态
f2.类的成员?? ??? ?//面上感觉都是在操作Fruit,但是真正执行的都是Orange的具体展示
多态性的使用场景:
?? ?1)、多态参数;
?? ?2)、多态数组;
?? ?3)、多态返回值;
好处:
?? ?降低代码的冗余度,阅读性更好,代码极具扩展性
引用类型之间的类型转换:
?? ?1)、自动向上转型/造型: ? ?子 -> 父?? ?理解:小 -> 大
?? ?2)、强制向下转型/造型: ? ?父 -> 子?? ?理解:大 -> 小
引用类型之间的强转操作,需要关注编译和运行两个阶段
编译阶段:
?? ?一旦需要被转换成的类型和对象的所属类型是子父类的关系,则编译就能通过;反之编译失败报错!
运行阶段:
?? ?jvm回去内存中查看对象的本质类型和需要被转换成的类型是否一致,如果一致,则运行成功;如果不一致,运行失败(运行报错)
运行时异常:
?? ?java.lang.ClassCastException
instanceof关键字:
作用:避免、杜绝类型转换异常的出现
格式模板:
?? ?对象名 instanceof 数据类型
执行流程:
?? ?如果对象本质类型属于该数据类型,则返回true;
?? ?如果对象本质类型不属于该数据类型,则返回false;
【注意】:instanceof左边对象名类型必须是右边的父类或者同类,不然编译会报错。
3、关于多态的总结:
程序代码一旦多态了,结合属性(静态、非静态)、静态方法、非静态方法使用,是否有多态性的具体体现
?? ?总结关系图:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?编译阶段? ? ? ? ? ? ? ? ? ? 运行阶段? ? ? ? ? ? ? ? ? ?是否有多态性的体现
?? ??? ?属性(静态、非静态)?? ??? ?看等号左侧?? ??? ??? ??? ?看等号左侧?? ??? ??? ??? ?没有
?? ??? ?静态方法? ? ? ? ? ? ? ? ? ? ? ? ?看等号左侧?? ??? ??? ??? ?看等号左侧?? ??? ??? ??? ?没有
?? ??? ?非静态方法? ? ? ? ? ? ? ? ? ? ?看等号左侧? ? ? ? ? ? ? ? ?看等号右侧?? ??? ??? ??? ?有
?? ?结论:程序代码多态了,只有结合非静态方法使用才会有多态性的具体展示体现
4、包
理解:目录、文件夹
关键字:package
包名也是标识符之一
规范如下:
?? ?1)、所有字母全部小写,如果是多个单词组成,中间使用.进行间隔;
?? ?2)、不成为的规定:使用公司域名的倒序形式;
举例:
场景:为京东开发某项目
?? ?包的命名:
?? ??? ?com.jd.项目名.模块名.子模块名
5、如何去使用类库:
有两种方式
方式一:导包操作【常用】
关键字:import
举例:
?? ?import java.util.Random;
?? ?Random r = new Random();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //使用了类的简名称形式
方式二:不导包操作【不常用】
举例:
?? ?java.util.Random r = new java.util.Random();?? ?//使用了类的全名称形式
本电子书目录:《Java基础的重点知识点全集》
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!