设类a将其它类对象作为成员_Java基础系列11修饰符,内部类,参数传递

0a5628fd97d44a0dba196b8d82d590cd.png

final关键字

概述: 学习了继承后,我们知道,子类可以在父类的基础上改写父类内容,比如,方法重写。那么我们能不能随意的继承API中提供的类,改写其内容呢?显然这是不合适的。为了避免这种随意改写的情况,Java提供了final关键字,用于修饰不可改变内容。 final:   不可改变。可以用于修饰类、方法和变量。 1. 类:被修饰的类,不能被继承。 2. 方法:被修饰的方法,不能被重写。 3. 变量:被修饰的变量,不能被重新赋值。 c8bb0d2b35016d48a722a653732fcf6e.png final修饰引用类型局部变量 9e1e7b2f300953013e036f5db9b38d5b.png 成员变量涉及到初始化的问题,初始化方式有两种,只能二选一。 f70471c3fe87ed94a2c753f28cc2be6c.png 被final修饰的常量名称,一般都有书写规范,所有字母都大写。

static关键字

概述: static是静态修饰符,一般修饰成员。被static修饰的成员属于类,不属于单个这个类的某个对象。static修饰的成员被多个对象共享。static修饰的成员属于类,但是会影响每一个对象。被static修饰的成员又叫类成员,不叫对象的成员。 类变量:当static修饰成员变量时,该变量称为类变量。该类的每个对象都共享同一个类变量的值。任何对象都可以更改该类变量的值,但也可以在不创建该类的对象的情况下对类变量进行操作。 定义格式: static 数据类型 变量名;  b637431e54f9fbf6165813a8ffb2f628.png 静态方法: 当static修饰成员方法时,该方法称为类方法(习惯称为静态方法) 。静态方法在声明中有static,建议使用类名来调用,而不需要创建类的对象。调用方式非常简单。 静态方法调用的注意事项: 1. 静态方法可以直接访问类变量和静态方法。 2. 静态方法不能直接访问普通成员变量或成员方法。反之,成员方法可以直接访问类变量或静态方法。 3. 静态方法中,不能使用this关键字。 4. 静态方法只能访问静态成员。 调用格式:被static修饰的成员可以并且建议通过类名直接访问。虽然也可以通过对象名访问静态成员,原因即多个对象均属于一个类,共享使用同一个静态成员,但是不建议,会出现警告信息。 2b6af24c814890de40a4c40357fdaed8.png static修饰的内容: 1. 是随着类的加载而加载的,且只加载一次。 2. 存储于一块固定的内存区域(静态区),所以,可以直接被类名调用。 3. 它优先于对象存在,所以,可以被所有对象共享。 静态代码块: 定义在成员位置,使用static修饰的代码块{ }。 位置:类中方法外。 执行: 随着类的加载而执行且执行一次,优先构造方法的执行。 9614dc12067e704716821c862a8cbf0d.png

权限修饰符

概述: 在Java中提供了四种访问权限,使用不同的访问权限修饰符修饰时,被修饰的内容会有不同的访问权限。 public: 公共的。 protected: 受保护的 default: 默认的 private: 私有的 访问权限的区别
publicprotecteddefault(不加修饰符,默认default)private
同一类中
同一包中(子类与无关类)
不同包的子类
不同包中的无关类
一般情况下 1. 成员变量使用private,隐藏细节。 2. 构造方法使用public,方便创建对象。 3. 成员方法使用public,方便调用方法。

内部类

概述: 将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类。 根据内部类在类中定义位置的不同可以分为: 在类的成员位置:成员内部类 在类的局部位置:局部内部类

成员内部类

成员内部类: 定义在类中方法外的类。 访问特点 1. 内部类可以直接访问外部类的成员,包括私有成员。 2. 外部类要访问内部类的成员,必须要建立内部类的对象。 其它类中创建内部类对象格式 外部类名.内部类名 对象名 = new 外部类型().new 内部类型(); 9d26bb12658a7cf6a0fdb5a1ca97ec93.png 内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号 。如下图为上图例子编译的.class文件。 f7e0337f02c3168c678ca6013989b1e0.png

局部内部类

局部内部类: 是在方法中定义的类,所以外界无法直接使用,需要在方法内部创建对象并使用。该类可以直接访问外部类的成员,也可以访问方法内的局部变量。 b6c1b5f8ac049c4c37288bb433e444b0.png

匿名内部类

匿名内部类: 是内部类的简化写法。它的本质是一个带具体实现的父类或者父接口的匿名的子类对象。 开发中,最常用到的内部类就是匿名内部类。以接口举例,当你使用一个接口时,得做如下几步操作, 1. 定义子类 2. 重写接口中的方法 3. 创建子类对象 4. 调用重写后的方法 我们的目的,最终只是为了调用方法,所以就通过匿名内部类简化过程,把四步合成一步。 内部类的使用 ,这里以接口为例。 定义一个接口 9b3586ff91bfe92f32ec3e247e0a1e11.png 匿名内部类通过多态的形式接受 c9ddbe6ed8c6cd753b2be762d81ba0cf.png 匿名内部类直接调用方法 2959e52ca71e619484d61f5eeb68b3b0.png 方法的形式参数是接口或者抽象类时,也可以将匿名内部类作为参数传递 eec46111bc8cb5f641cd3d82e6a9cff4.png

引用类型作为方法参数

类名作为方法参数和返回值 1. 类名作为方法的形参 方法的形参是类名,其实需要的是该类的对象 实际传递的是该对象的【地址值】 2. 类名作为方法的返回值 方法的返回值是类名,其实返回的是该类的对象 实际传递的,也是该对象的【地址值】 6aa332b8639a4ce43a2d44f67ecccbfc.png 抽象类作为形参和返回值 方法的形参是抽象类名,其实需要的是该抽象类的子类对象 方法的返回值是抽象类名,其实返回的是该抽象类的子类对象 51aa8707053105f26a4cde368bc601e4.png 接口名作为形参和返回值 方法的形参是接口名,其实需要的是该接口的实现类对象 方法的返回值是接口名,其实返回的是该接口的实现类对象 2ea47e7aa6c2a1065dd4e0a3b4395a09.png 其实看下来发现,三者传递方式基本是一样的 8d081eefc4e8e3c2ac204405c27141fe.png 说明:为了避免耗费大家宝贵的时间。文章尽可能简短易懂。编程学习需要多动手,大家可以结合后台的demo(后台回复【示例】获取)理解文章,举一反三就更棒了。欢迎大家一起探讨问题。 END 8c23be5fde0f91d046660e14adf702ba.png留言板

java从基础到进阶,前端从基础到进阶,是一个漫长且艰辛的旅途。只有互相帮助才能走得更远。欢迎大家一起探讨问题,我们一起成长。

Java学习之旅

等你加入

一同成长

07a8e1d8cd1cf86d1bac61f9a29e7a9f.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值