JAVAEE第五章 final 权限修饰(public private proteced) 内部类

一世执手 提交于 2020-02-22 12:14:14

学习内容

  • final修饰类的使用
  • final修饰方法的使用
  • 权限修饰(public private protected default)的作用域
  • 内部类概念及使用
  • 引用类型作为成员变量
  • 引用类型作为传入参数
  • 引用类型作为返回值类型

第一节 final关键字

  • 概述
    子类可以继承父类,同时子类可以修改父类中的成员变量也可以重写父类的方法,由此带的问题是安全问题,当我们不想让任何类修改变量和方法的时候,可以用final关键.
  • final可以修饰类、变量、方法
    1- 被修饰的类不能被继承
    2- 被修饰的方法不能重写
    3- 被修饰的成员变量不能再修改
  • 使用格式
  1. 修饰类
    final class 类名{}

  2. 修饰方法
    修饰符 final 返回值类型 方法名(参数){}

  3. 修饰变量
    修饰基本类型的话,变量只能赋值一次,再次赋值会报错.
    修饰引用类型的话,同一个变量只能指向同一个对象地址,不能再次赋值
    大部分我们是用来修饰引用变量

    //修饰基本类型
    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("汽车跑");
            }
        };
    }
    
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!