![0a5628fd97d44a0dba196b8d82d590cd.png](https://i-blog.csdnimg.cn/blog_migrate/7b3680f7799efb1368dd05d7dbf6a17b.png)
final关键字
概述: 学习了继承后,我们知道,子类可以在父类的基础上改写父类内容,比如,方法重写。那么我们能不能随意的继承API中提供的类,改写其内容呢?显然这是不合适的。为了避免这种随意改写的情况,Java提供了final关键字,用于修饰不可改变内容。 final: 不可改变。可以用于修饰类、方法和变量。 1. 类:被修饰的类,不能被继承。 2. 方法:被修饰的方法,不能被重写。 3. 变量:被修饰的变量,不能被重新赋值。![c8bb0d2b35016d48a722a653732fcf6e.png](https://i-blog.csdnimg.cn/blog_migrate/e81d1765b146b96e232880b281e590d3.png)
![9e1e7b2f300953013e036f5db9b38d5b.png](https://i-blog.csdnimg.cn/blog_migrate/7d7573ad75203e3e9eeafc2dbc81705d.png)
![f70471c3fe87ed94a2c753f28cc2be6c.png](https://i-blog.csdnimg.cn/blog_migrate/4130d0092b576088e4fe2f672db9d4d8.png)
static关键字
概述: static是静态修饰符,一般修饰成员。被static修饰的成员属于类,不属于单个这个类的某个对象。static修饰的成员被多个对象共享。static修饰的成员属于类,但是会影响每一个对象。被static修饰的成员又叫类成员,不叫对象的成员。 类变量:当static修饰成员变量时,该变量称为类变量。该类的每个对象都共享同一个类变量的值。任何对象都可以更改该类变量的值,但也可以在不创建该类的对象的情况下对类变量进行操作。 定义格式: static 数据类型 变量名;![b637431e54f9fbf6165813a8ffb2f628.png](https://i-blog.csdnimg.cn/blog_migrate/f59e4f278239872e7059137960434f9e.png)
![2b6af24c814890de40a4c40357fdaed8.png](https://i-blog.csdnimg.cn/blog_migrate/83fc1bc235ead6e8e0ab3b511e3c250b.png)
![9614dc12067e704716821c862a8cbf0d.png](https://i-blog.csdnimg.cn/blog_migrate/b60dc3da15310cf5be97af8c32842157.png)
权限修饰符
概述: 在Java中提供了四种访问权限,使用不同的访问权限修饰符修饰时,被修饰的内容会有不同的访问权限。 public: 公共的。 protected: 受保护的 default: 默认的 private: 私有的 访问权限的区别public | protected | default(不加修饰符,默认default) | private | |
同一类中 | √ | √ | √ | √ |
同一包中(子类与无关类) | √ | √ | √ | |
不同包的子类 | √ | √ | ||
不同包中的无关类 | √ |
内部类
概述: 将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类。 根据内部类在类中定义位置的不同可以分为: 在类的成员位置:成员内部类 在类的局部位置:局部内部类成员内部类
成员内部类: 定义在类中方法外的类。 访问特点 1. 内部类可以直接访问外部类的成员,包括私有成员。 2. 外部类要访问内部类的成员,必须要建立内部类的对象。 其它类中创建内部类对象格式 外部类名.内部类名 对象名 = new 外部类型().new 内部类型();![9d26bb12658a7cf6a0fdb5a1ca97ec93.png](https://i-blog.csdnimg.cn/blog_migrate/274af01750b21a8c94a8cf8f5baaf99a.png)
![f7e0337f02c3168c678ca6013989b1e0.png](https://i-blog.csdnimg.cn/blog_migrate/f6434dc70124b3360a416dc82117f78c.png)
局部内部类
局部内部类: 是在方法中定义的类,所以外界无法直接使用,需要在方法内部创建对象并使用。该类可以直接访问外部类的成员,也可以访问方法内的局部变量。![b6c1b5f8ac049c4c37288bb433e444b0.png](https://i-blog.csdnimg.cn/blog_migrate/c8fba1b6285f1b6815967a0e8b1a3de6.png)
匿名内部类
匿名内部类: 是内部类的简化写法。它的本质是一个带具体实现的父类或者父接口的匿名的子类对象。 开发中,最常用到的内部类就是匿名内部类。以接口举例,当你使用一个接口时,得做如下几步操作, 1. 定义子类 2. 重写接口中的方法 3. 创建子类对象 4. 调用重写后的方法 我们的目的,最终只是为了调用方法,所以就通过匿名内部类简化过程,把四步合成一步。 内部类的使用 ,这里以接口为例。 定义一个接口![9b3586ff91bfe92f32ec3e247e0a1e11.png](https://i-blog.csdnimg.cn/blog_migrate/feecaba7d45668aa18b577df071f8064.png)
![c9ddbe6ed8c6cd753b2be762d81ba0cf.png](https://i-blog.csdnimg.cn/blog_migrate/c9d5ce730af77b4b381bced3e774a145.png)
![2959e52ca71e619484d61f5eeb68b3b0.png](https://i-blog.csdnimg.cn/blog_migrate/535859c4efef31547983521bc05dde08.png)
![eec46111bc8cb5f641cd3d82e6a9cff4.png](https://i-blog.csdnimg.cn/blog_migrate/8d9889b61ddff02a9d2a528bc22cc814.png)
引用类型作为方法参数
类名作为方法参数和返回值 1. 类名作为方法的形参 方法的形参是类名,其实需要的是该类的对象 实际传递的是该对象的【地址值】 2. 类名作为方法的返回值 方法的返回值是类名,其实返回的是该类的对象 实际传递的,也是该对象的【地址值】![6aa332b8639a4ce43a2d44f67ecccbfc.png](https://i-blog.csdnimg.cn/blog_migrate/c3991d78e2683a994dab3842e00344f3.png)
![51aa8707053105f26a4cde368bc601e4.png](https://i-blog.csdnimg.cn/blog_migrate/0a024c03e9dc67340221f7144a0c3fa2.png)
![2ea47e7aa6c2a1065dd4e0a3b4395a09.png](https://i-blog.csdnimg.cn/blog_migrate/0ce5a3e4cc650c2879fd51ce4bc2128d.png)
![8d081eefc4e8e3c2ac204405c27141fe.png](https://i-blog.csdnimg.cn/blog_migrate/7cad08b767e1dda41851cdaeb3bdcf66.png)
![8c23be5fde0f91d046660e14adf702ba.png](https://i-blog.csdnimg.cn/blog_migrate/113847d6d5f3e4987e1172d2eec635ce.png)
java从基础到进阶,前端从基础到进阶,是一个漫长且艰辛的旅途。只有互相帮助才能走得更远。欢迎大家一起探讨问题,我们一起成长。
Java学习之旅
等你加入
一同成长
![07a8e1d8cd1cf86d1bac61f9a29e7a9f.png](https://i-blog.csdnimg.cn/blog_migrate/ee8c3c7f3a0e016892f0014ca84f6253.jpeg)