java se 权限修饰符、final关键字、代码块、内部类

一、权限修饰符

1.简述:

  • public:最高权限,那都可以访问
  • protected:受保护的
  • default:default 默认的(不写权限修饰符就是默认权限,不能直接把default写出来)
  • private:私有的(只能在自己类中直接访问)

2.不同权限的访问能力

public

protected

default(空的)

private

同类

yes

yes

yes

yes

同包不同类

yes

yes

yes

no

不同包子父类

yes

yes

no

no

不同包非子父类

yes

no

no

no

public -> 最大权限 privat->最小权限

建议:

属性: 用 private -> 封装思想

成员方法: public -> 便于调用

构造: public -> 便于new对象

二、final关键字

1.final修饰类

格式: public final class 类名{}

特点:被final修饰的类不能被继承

2.final修饰方法

格式:修饰符 final 返回值类型 方法名(形参){

方法体

return 结果}

特点:被final修饰的不能被重写(final 和abstract 不能同时修饰一个方法)

3.final修饰局部变量

格式:final 数据类型 变量名 = 值

特点:被final修饰的变量不能被二次赋值

4.final修饰对象

格式:final 数据类型 对象命 = new 对象()

特点:被final修饰的对象,地址值不能改变,对象中的属性值可以改变

5.final修饰成员变量

格式:final 数据类型 成员变量 = 值

特点:1.需要手动赋值。2.不能二次赋值

三、代码块

1.构造代码块

格式:{

代码

}

执行特定:优先于方法执行,每new一次,就会执行一次

2.静态代码块

格式:static{

代码

}

特点:静态代码块优先于构造代码块和构造方法执行,而且只执行一次。

3.静态代码块使用场景

一些代码最先初始化而且只初始化一次

四、内部类

在java中允许一个类定位于另外一一个类,前者是内部类,后者是外部类

分类: 成员内部类,局部内部类,匿名内部类

1.静态成员内部类

格式:直接在定义内部类的时候加上static关键字

public class A{

static class B{

}

}

注意:

  1. 内部类可以定义属性,方法,构造
  2. 静态成员内部类可以被final或者abstract修饰(final->不能继承,abstract->不能new)
  3. 静态内部类不能调用外部的非静态成员
  4. 内部类还可以被四种权限修饰符修饰

调用内部静态类:外部类.内部类 对象名 = new 外部类();

2.非静态成员内部类

格式:

public class A{

public class B{

}

}

注意:

  1. 内部类可以定义属性,方法,构造
  2. 内部类还可以被四种权限修饰符修饰

调用非静态内部类:外部类.内部类 对象名 = new 外部类().new 内部类();

3.局部内部类

可以在代码中构造中代码块中

4.匿名内部类

格式:

new 接口/对象类(){

重写方法

}.重写的方法();

或者:

类名 对象命 = new 接口/对象类(){

重写方法

}

对象命.重写的方法();

使用情况:仅简单使用一下接口里面的方法。

Java后端学习路线 文章被收录于专栏

Java基础 MySQL

全部评论
接好运
点赞 回复 分享
发布于 05-08 12:22 湖北
天哪,凌晨两点还在学😨
点赞 回复 分享
发布于 05-06 02:57 江苏

相关推荐

05-07 17:08
东北大学 Java
1、20分钟项目(1) 说一下你认为项目中最大的亮点(设计 hotkey 探测)(2) 单体架构与微服务架构的区别,后者的优势?(3) 你用到的 lua 脚本,具体是做什么用的?(4) 看你项目中用到了 Kotlin,你能说说与 Java 的区别吗?(5) 你项目中用到了 OSS 对象存储服务?简单说说(6) 你项目中是怎么体现高并发的?2、25分钟八股(1) Java 中字符串为什么是不可变的?答:用了 final 关键字修饰,再问为什么加了 final 关键字修饰就是不可变的?没复习到...(2) 介绍下数据库中的事务,特性?分别都是靠什么实现的?(3) 说到了 MVCC,那你再介绍下 MVCC(4) 可重复读能解决幻读问题吗,如果不能该怎么办?答:加锁(5) 那你说一下 MySQL 中加锁的底层原理,锁是实现的?(不知道怎么答)(6) 看你项目中有用到索引,说一下索引怎么用的?那比如联合索引定义了 a b c 这三个列,我查询的时候 a = 1 and c = 2 这样的话会走索引查询吗?(索引下推)(7) 如果项目上线了,你发现某个接口响应的很慢,你怎么处理?答:把 EXPLAIN,索引,甚至带宽什么的都说了,然后面试官说,有没有可能你的代码逻辑也存在问题?汗...(8) 后端这些中间件你都熟悉什么?答:Redis RocketMQ(9) 那你介绍一下 Redis 中的数据结构吧。重点答了 ZSet 跳表(10) 计算机网络了解吗?说一下你知道的协议?答:HTTP,HTTPS,TCP,UDP 等(11) ARP 协议知道吗?运行在哪一层?(这个一时忘了...)(12) ArrayList 和 LinkedList 区别?插入和查询操作的时间复杂度?(13) HashSet 底层是怎么实现的,插入和查询的时间复杂度?什么时候用 List,什么时候用 Set?3、算法:LC 128 最长连续序列(并问实现的时间复杂度)总结:各种挖底层,八股盛宴,拷打的我压力山大。基本都答上了,只有两三个没了解过,最后挂...
百度一面556人在聊 查看19道真题和解析
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务