第5章-第5节-Java面向对象的多态以及类库的使用方式、final

2023-12-27 07:09:19

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基础的重点知识点全集》

文章来源:https://blog.csdn.net/jnbbwyth/article/details/135233408
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。