final,权限,内部类(IDEA版)

本文详细介绍了Java中的final关键字,包括它如何修饰类、方法和变量,以及在不同情况下的使用。同时,文章讲解了权限修饰符的作用,如public和private的使用建议。此外,还深入探讨了内部类的概念,成员内部类和匿名内部类的访问特点,以及它们在实际编程中的应用。最后,总结了引用变量的用法,包括类和接口作为成员变量的情况,并通过发红包案例展示了内部类的实际应用。
摘要由CSDN通过智能技术生成

final关键字

概述:学习继承之后我们知道了子类是可以继承父类的方法(方法重写)和属性,但是java中API是不是可以随便的改写呢?显然是不能,所以就出现了final关键,代表的是最终的不可改变的。

final关键字:
修饰类:不能被继承
修饰方法:不能被重写
修饰变量:不能被重新赋值
使用方法
修饰类
使用方法:final class 类名{}
修饰方法(当重写final的方法的时候,会报错):
修饰符 final 返回值类型 方法名(参数列表){
方法体
}
修饰变量:
基本数据类型:基本类型的局部变量被修饰之后,只能够赋值一次,且不能被更改。

p
ublic class FinalDemo1 {
   
public static void main(String[] args) {
   
// 声明变量,使用final修饰
final int a;
// 第一次赋值
a = 10;
// 第二次赋值
a = 20; // 报错,不可重新赋值
// 声明变量,直接赋值,使用final修饰
final int b = 10;
// 第二次赋值
b = 20; // 报错,不可重新赋值
}
}
final int c = 0;
for (int i = 0; i < 10; i++) {
   
c = i;
System.out.println(c);
}

这种方式会报错的


for (int i = 0; i < 10; i++) {
   
final int c = i;
System.out.println(c);
}

这种写法不会报错,因为每一次循环,都是一个新的变量c所以不会报错

引用类型
引用类型的局部变量,被final修饰之后,只能指向一个对象,地址不能被修改,但是不会影响内部的成员变量值的修改

public class FinalDemo2 {
   
public static void main(String[] args) {
   
// 创建 User 对象
final User u = new User();
// 创建 另一个 User对象
u = new User(); // 报错,指向了新的对象,地址值改变。
// 调用setName方法
u.setName("张三"); // 可以修改
}
}

3.成员变量
成员变量涉及到初始化的问题,初始化的方式有两种,并且只能2选1
(1)显示初始化

public class User {
   
final String USERNAME = "张三";
private int age;
}

(2)构造方法初始化

public class User {
   
final String USERNAME ;
private int age;
public User(String username, int age) {
   
this.USERNAME = username;
this.age = age;
}
}

注意:被final修饰的变量名称一般都有书写规范,所有的字母都要是大写
权限修饰符
概述:
在java中提供了四种权限修饰符,使用不同的权限修饰符的时候,被修饰的内容会有不同的访问权限
在这里插入图片描述
public 拥有最大的权限,private则是最小的
编写代码的时候,如果没有特殊的考虑的话建议这样使用权限:
成员变量使用private 隐藏细节
构造方法使用public 方便调用对象
成员方法使用public 方便调用方法
注意当不加修饰符的时候,其访问的能力与default修饰符相同

内部类

概述:
什么是内部类?
将一个类1定义在类2中,里面的类1就是内部类,类2则是外部类
成员内部类
成员内部类定义在方法外面

class 外部类 {
   
class 内部类{
   
}
}

在描述事物的时候,若一个事物还包含有其他的事物,就可以使用内部类这种结构,比如汽车含有发动机

class Car {
    //外部类
class Engine {
    //内部类
}
}

访问特点:
1.内部类可以直接访问外部类的成员,包括私有成员
2.外部类如果要是要访问内部类中的成员,必须建立内部类的对象
创建内部类对象的格式

外部类名.内部类名 对象名 = new 外部类型()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值