学习内容
- final修饰类的使用
- final修饰方法的使用
- 权限修饰(public private protected default)的作用域
- 内部类概念及使用
- 引用类型作为成员变量
- 引用类型作为传入参数
- 引用类型作为返回值类型
第一节 final关键字
- 概述
子类可以继承父类,同时子类可以修改父类中的成员变量也可以重写父类的方法,由此带的问题是安全问题,当我们不想让任何类修改变量和方法的时候,可以用final关键. - final可以修饰类、变量、方法
1- 被修饰的类不能被继承
2- 被修饰的方法不能重写
3- 被修饰的成员变量不能再修改 - 使用格式
-
修饰类
final class 类名{} -
修饰方法
修饰符 final 返回值类型 方法名(参数){} -
修饰变量
修饰基本类型的话,变量只能赋值一次,再次赋值会报错.
修饰引用类型的话,同一个变量只能指向同一个对象地址,不能再次赋值
大部分我们是用来修饰引用变量//修饰基本类型 final int num = 1; num = 2;//再次赋值报错
final User user = new User("张三"); user = new User("李四");//在new一个新的User对象会报错
小贴士:一般被final修饰的变量,都用大写来表示
第二节权限修饰符
- 概述
JAVA提供给了四种权限修饰符
1.public: 公用的
2.protected: 受保护的
3.default: 默认的
4.private:私有的 - 不同权限的访问能力
第三节 内部类
-
概述
在类A里面再定义一个类B,那么就说B是A的内部类. -
格式
class A{ class B{ } }
-
访问特点
1.内部类可以访问外部类成员,包括私有的成员.
2.外部类要访问内部类成员,需要建立内部类的对象
3.如果要访问内部类对象,需先建立外部类对象,通过外部类对象再实例化内部类
创建内部类对象格式:外部类名A.内部类名B 对象名 = new 外部类A.new 内部类B();
或者
外部类A 外部类对象名 = new 外部类A(); 内部类B 内部类对象名 = 外部类对象名.new 内部类B();
举例:
//外部类Person public class Person { private boolean live = true; //内部类 Heart class Heart{ public void show(){ //内部类访问外部类可直接访问 if (live){ System.out.println("心脏跳动"); } else { System.out.println("心脏停止!"); } } } }
//测试类 public static void main(String[] args) { //第一种写法 //Person.Heart person1 = new Person().new Heart(); //第二种写法 Person person = new Person(); Person.Heart heart = person.new Heart(); heart.show(); }
-
匿名内部类(重点)
1.概念
匿名内部类是内部类的简写方式,他的本质是一个带有具体实现父类和接口的匿名子类对象.
2.格式new 父类名或接口名(){ 方法的重写 @Override public void method(){ // 执行语句 } }
3.背景
JAVA为什么要引进匿名内部类,在以前我们实现一个接口或者重写父类的方式时,需要进行四步1.创建一个子类.2.重写父类方法3.实例化子类对象4.通过子类调用重写的方法.引进匿名内部类,可以一步完成这四个操作.
4.具体实现代码public interface Car { public void run(); }
public static void main(String[] args) { Car car = new Car(){ @Override public void run() { System.out.println("汽车跑"); } }; }
来源:CSDN
作者:张小升
链接:https://blog.csdn.net/oFlying1/article/details/104438808