美文网首页
第十七天学Java(final和static关键字)

第十七天学Java(final和static关键字)

作者: Hoffnung_8164 | 来源:发表于2020-04-07 21:02 被阅读0次

    2.1abstract

        词义:抽象的

        A:修饰方法,表示抽象的方法,什么意思呢,就是这个方法,只有方法的声明,没有具体的实现

            意味着:表示有这个功能,但是没有具体的要执行的代码  

      B:还可以修饰类,如果一个类中包含了一个抽象方法,那么该类就必须时抽象的

            意味着:抽象类,不能被实例化(创建对象),因为里面可能包含了抽象方法

                            最大的目的:强制子类的重写。

                所以一个类包含了抽象方法,那么该类就是抽象类,不能被实例化,只能等待子类来继承并是想这个抽象方法。子类应该积极的是想这些方法,就可以创建子类对象,但是如果子类没有实现全部的抽象方法,呢么子类也是抽象的,要再等子类继承,并实现抽象方法

        常见的错误 CTRL+1 万能键

        abstract使用总结:

    1、为什么要使用抽象类?

                有些类创建了对象没有意义,需要把这个定义为抽象类

                抽象类,不能实例化,只能被继承

    2、abstract关键字

                修饰方法:抽象方法,没有方法体,没有(),需要使用;来结束方法的声明

                修饰类:抽象类,抽象方法所在的类必须是抽象的

    3、抽象方法:

                没有方法体,就是没有()

                一个类中如果有抽象方法,那么这个类必须是抽象类

                如果一个类是抽象的,不一定非要包含抽象方法

                抽象方法必须被子类重写,除非子类也是抽象的

     4、抽象类和普通父类只有一点区别,就时可能包含抽象方法

                抽象类中,可能包含有抽象方法,所以抽象类不允许实例化

                抽象类也可以没有抽象方法(语法上是可以的),但是往往没有实际用途

                抽象类中可以有构造方法,虽然抽象类不能实例化,不能创建对象,但是狗仔方法会在子类的构造中被调用

                抽象类中的抽象方法,一定要被子类重写,如果子类没有重写,子类也抽象

    5、抽象类和普通的区别:

                抽象类需要使用abstract关键字,普通类不需要

                构造方法:都有,但是抽象方法不能被实例化,普通类可以

                成员方法:

                    抽象类中,可以是抽象的,也可以是普通的

                    普通类中,不能由抽象方法,只能是普通方法

                成员变量:都有

                最后:抽象类和普通类很相似,只不过可能多了抽象的方法,抽象类是天生做父类的

    2.2final关键字

            词义:最终的,最后的

            在Java中,可以修饰类,变量,方法

            1、final修饰局部变量

                赋值之后,数值不能再修改了

            2、final修饰成员变量

                final在类中修饰成员变量的话。要求必须初始化,并且赋值之后,不能再修改数值了

            3、final修饰成员方法

                final所修饰的方法,不允许子类重写的

            4、final修饰类

                final修饰的类,不允许子类继承,俗称“太监类”

    所以:

            1、final修饰变量(成员变量和局部变量),则为常量,只能赋值这一次

                    修饰成员变量的时候,定义时,要同时给出初始化的值

                    修饰局部变量,只能赋值一次

             2、final修饰方法,则该方法不能被子类重写

            public final 返回值类型 方法名(){

            3、final修饰类,则类不能被继承

            final class 最终类{

      对比final和abstract关键字修饰方法        

            1、final修饰的方法,不让子类重写

            2、abstract修饰的方法,要求子类必须重写

            3、所以final和abstract不能同时修饰一个方法

        变量:本质就是一小块内存,用于存储数据。在程序执行过程中,数值可以改变

        常量:同变量类似,也是存储数据,数值不能改变

    2.3static关键字

    词义:静态的。属于类,不再属于对象

    修饰属性

        类中的属性:2中

            非static,叫成员变量(name,age),属于对象的,随着对象的创建而产生,创建几个对象,就有几份该属性值,对象的属性值是彼此分开的

            对象,成员变量,表示该对象访问自己的属性,赋值,取值

            static的属性,叫做静态属性,属于类的,和对象无关,随着类的加载而产生,贼内存中,就一份,应该由类直接访问,但是对象也可以访问,多个对象,共享一份

            类,静态属性,可以赋值,取值

        应用:什么样的属性。适合时静态的属性,什么样的适合成员变量

            如果一个类中的某一个属性,该类所有的对象,对于该属性的取值都相同,就可以写成静态的属性。节约内存,操作简便

    所以,static修饰的属性:

            1、静态成员变量,使用static修饰的成员变量,行医在内存中的【数据区】

            2、静态成员变量,不建议适用对象调用,赋值,取值,如果使用,也允许但是会警告

            3、静态的成员属性,属于类的,应该由类直接调用【强雷推荐方式】

                类名。静态属性名= 取值/赋值

            4、如果代码中,没有创建对象,可以通过类名直接访问静态属性【和对象无关】

            5、不过通过对象还是类名,如果修改了静态属性的值,那么就改了,其他的对象来访问,都会受到影响

    2.3.3修饰成员方法

        //static修饰方法的语法格式

            public static void 方法名(参数列表){

                方法体;

            }

            一个方法,一旦使用static修饰,表示该方法属于类,应该由类来直接调用

        静态方法中:

            可以访问静态的属性(属于类的),但是不能访问非静态的属性(属于对象的)

            可以访问静态的方法(属于类的),但是不能访问非静态的方法(属于对象的)

            结论:静态方法中,不要涉及对象的内容,对象的属性,对象的方法,包括this和super关键字

             非静态方法,属于对象,全都行,静态的,非静态的都可以,thissuper都i可以

    应用:

                尽可能的将一个方法设计为静态的,但是如果方法中涉及到了对象内容,对象属性,对象的方法,以及this和super关键字,那么这个方法就不能是静态的了,只能是非静态的

    三、总结

    1、abstract:抽象的

        修饰方法:抽象方法。必须被子类重写。

        修饰类:抽象类。不能实例化,只能等待子类继承,并实现抽象的方法。同普通类很类似,

        作用:强制子类必须重写。

    2、final:最终的

        修饰变量:成员变量(直接初始化赋值),局部变量。不让修改数值。

        修饰方法:不允许子类重写。

        修饰类:不允许有子类继承。

        作用:不让改!!!

    3、static:静态的

        修饰变量:属于类的,由类来访问,就一份。对象也可以访问,多个对象共享这一份数据

        修饰方法:属于类的,由类来访问。

        修饰代码块

        修饰内部类

    相关文章

      网友评论

          本文标题:第十七天学Java(final和static关键字)

          本文链接:https://www.haomeiwen.com/subject/wpuophtx.html