zoukankan      html  css  js  c++  java
  • day11_final、权限、内部类、引用类型


    2020年2月24日

    1 final关键字

    1.1概述

    子类可以在父类的基础上改写父类的内容,例如方法重写。为了避免随意改写的情况,java提供了final关键字,用于修饰不可改变的内容

    final:不可改变。

    • 类:被修饰的类,不能被继承
    • 方法:被修饰的方法,不能被重写
    • 变量:被修饰的变量,不能被重新赋值

    1.2 使用方式

    修饰类

    查询API可以发现,像public final class Stringpublic final class Mathpublic final class Scanner等类都是被final修饰的,目的是供我们使用,所以不让我们改变其内容。

    修饰方法

    格式:

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

    重写被final修饰的方法时,编译会报错

    修饰变量

    1. 局部变量——基本类型

    基本类型的局部变量,被final修饰后,只能赋值一次,不能再更改

    1. 局部变量——引用类型

    只能指向一个对象,地址值不能再更改,但是不影响对象内部的成员变量值的修改

    1. 成员变量

    成员变量涉及到初始化的问题,初始化的方式只能二选一:

    • 显示初始化
    • 构造方法初始化

    被final修饰的常量名称,所有字母都大写,字母之间用_分隔

    2 权限修饰符

    2.1 概述

    Java中有四种访问权限。

    • public:公共的
    • protected:受保护的
    • default:默认的
    • private:私有的

    2.1 不同权限的访问能力

    public protected default private
    同一类中
    同一包中(子类与无关类)
    不同包的子类
    不同包中的无关类

    3 内部类

    3.1 概述

    将一个类A定义在另一个类B里面,里面的那个类A称为内部类,B称为外部类

    3.1.1 成员内部类

    定义在类中方法外的类

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

    在描述事务时,如果一个事务内部还包含其他事物,就可以使用内部类这种结构,比如汽车类Car中包含发动机类Engine,此时Engine就可以用内部类来描述,定义在成员位置

    访问特点

    • 内部类可以直接访问外部类的成员,包括私有成员
    • 外部类要访问内部类的成员,必须要建立内部类对象

    创建内部类对象的格式:

    外部类名.内部类名 对象名 = new 外部类型().new 内部类型();

    内部类仍然是一个独立的类,在编译之后会在内部类被编译成独立的.class文件,但是前面冠以外部类的类名和$符号

    1.2 匿名内部类【重点】

    • 匿名内部类:本质是一个带具体实现的父类或父接口的匿名的子类对象。开发中,最常用到的内部类就是匿名内部类。以借口举例,在使用一个接口时,需要定义子类、重写接口中的方法、创建子类对象、调用重写后的方法。如果目的只是为了调用方法,就可以将这四步合成一步。

    前提

    匿名内部类必须继承一个父类或者实现一个父接口

    格式

    new 父类名或接口名(){
    	//方法重写
    	@override
    	public void method(){
    		//执行语句
    	}
    };
    

    等号右边是匿名内部类,定义并创建该接口的子类对象

    等号左边是多态赋值,接口类型引用指向子类对象

    通常在方法的形式参数是接口或者抽象类时,也可以将匿名内部类作为参数传递

    4 引用类型用法总结

    在实际开发中,引用类型的使用非常重要,也非常普遍。基本类型可以作为成员变量、方法参数、方法返回值,引用类型也同样可以。

    4.1 class作为成员变量

    类作为成员变量时,对它进行赋值的操作,实际上,是赋给它该类的一个对象

    4.2 interface作为成员变量

    接口是对方法的封装

    使用一个接口作为成员变量,可以随时更换技能,这样的设计更加灵活,增强了程序的拓展性。接口作为成员变量时,对它进行赋值的操作,实际上,是赋给它一个实现类对象。

    4.3 interface作为方法参数和返回值类型

    当接口作为方法的返回值和方法参数,返回和传递的都是它的子类对象。ArrayList类是java.util.List接口的实现类。所以,当我们看到List接口作为参数或返回值类型,可以将ArrayList的对象进行传递和返回。

  • 相关阅读:
    H5 20-属性选择器上
    H5 19-序选择器下
    H5 18-序选择器
    算法基础部分整理-《图解算法》
    iOS 内存管理之属性关键字
    多线程 ---基础定义部分
    Mongodb基本命令总结
    MySQL四种隔离级别和MVCC
    python同步原语--线程锁
    python进程间通信--信号Signal
  • 原文地址:https://www.cnblogs.com/ningdeblog/p/12363494.html
Copyright © 2011-2022 走看看