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

你可能感兴趣的:(java)