Java: super关键字 final关键字 内部类的定义与使用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java: super关键字 final关键字 内部类的定义与使用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3576字,纯文字阅读大概需要6分钟。
内容图文
![Java: super关键字 final关键字 内部类的定义与使用](/upload/InfoBanner/zyjiaocheng/723/3881ad7f307f470aac88c409db97f28c.jpg)
文章目录
1.super关键字(表示父类属性、表示父类方法)
a.super用于方法
①用于构造方法(******)表示调用父类构造方法super(参数列表);
当子类调用父类无参构造时,super( 方法参数);可写可不写,表示调用父类无参构造。
当子类调用父类有参构造时,super(参数列表)必须要写,要告诉编译器当前调用的是哪个有参构造子类构造方法中调用父类构造时必须是第一行语句。
this和super不能同时调用。
②用于普通方法super.方法名(参数)
用于在子类中明确调用父类被覆写的方法
b.super用于属性
super.属性名 表示调用父类中被覆写的属性(权限不是private)
2.final关键字–终结器
2.1 final修饰类(string类以及8大基本数据类型的包装类,Integer)
当一个类被final关键字修饰,表示该类不能拥有子类(该类不允许被继承)。
一旦一个类被final修饰,该类的所有方法都会默认加上final。(成员变量不会加final)
2.2 final修饰方法
当一个方法被final修饰,明确表示该方法不允许被覆写。
当一个方法被private修饰后,相当于加了一个final关键字。
2.3 final修饰属性–常量
①final修饰普通数据类型的成员变量(最主要的用途)
被final修饰的成员变量必须在声明时初始化,并且初始化后值无法被修改。(构造块或构造方法中初始化)
final变量–常量(值不能被改变,每个对象都有自己的final变量,在对象产生时初始化)存在堆里。
static final --全局常量(所有对象共享此变量,并且在类加载时初始化,效率较高,通过类名调用)存在全局数据区 static可以节省空间 。
方法中不能定义静态变量。
全局常量命名规范:多个单词全大写,单词间以___分隔
②final修饰引用数据类型的变量(值不能改变) 类型也不能改变
final修饰数据类型,无论是基本类型还是引用类型,值不能改变,对于引用类型而言,不可改变的是指向不能变(保存的堆内存地址不能改变)。
3.内部类的定义与使用:在类内部进行其他类结构嵌套操作
this表示当前对象Inner in = new Inner(this); —>this表示当前产生的对象
内部类的优点:
a.内部类与外部类可以方便的访问彼此的私有域(包含私有方法、私有属性)
b.内部类是另外一种封装(保护性),对外部的其他类隐藏
c.内部类可以实现Java单继承的局限
缺点:结构复杂
成员内部类不能拥有静态域,但可以访问外部静态域。
静态内部类不能访问外部成员变量,但可以拥有成员变量。
内部类与外部类的关系:
a.对于非静态内部类,内部类的创建需要依赖外部类对象,在没有外部类实例之前无法创建非静态内部类。
b.内部类是一个相对独立的个体,与外部类没有is-a关系。
c.内部类可以直接访问外部类的元素(包含私有域),但是外部类不可以直接访问内部类元素,需要通过外部类的引用间接访问。
创建内部类语法(在外部类外部)
①创建非静态内部类外部类.内部类 内部类引用 = new 外部类( ) .new 内部类( );
Outter.Inner in = new Outter( ) .new Inner( );
先生成外部类对象,再生成内部类对象
②创建静态内部类(和普通类没有区别,套在外部类里面)外部类.内部类 内部类引用 = new 外部类.内部类( );
Outter.Inner in = new Outter.Inner( );
内部类的分类:
存在私有内部类,静态、成员均可
ArrayList中Node内部类、HashMap中Entry内部类(私有内部类)
①成员内部类(成员方法)
a.成员内部类不能存在任何static变量或方法,可以访问外部类的静态域
b.成员内部类是依附外部类的,所以只有先创建了外部类才能创建内部类。
②静态内部类(类比静态方法)
a.静态内部类的创建不需要依赖外部类,可以直接创建
b.静态内部类不可以使用任何外部类的非static域(包含属性与方法),但是可以存在自己的成员变量
③方法内部类
a.方法内部类不允许使用访问权限修饰符 public private protected 均不允许
b.方法内部类对外部完全隐藏,除了创建这个类的方法可以访问他以外,其他地方均不能访问
c.方法内部类如果要想使用方法形参,该形参必须使用final声明(JDK8将形参变为隐式final声明)
④匿名内部类(lamda表达式前身)
匿名内部类就是一个没有名字的方法内部类,因此特点与方法内部类完全一样,除此之外,还有俩个自己的特点:
a.匿名内部类必须继承一个抽象类或实现一个接口
b.匿名内部类没有构造方法,因为他没有类名
内容总结
以上是互联网集市为您收集整理的Java: super关键字 final关键字 内部类的定义与使用全部内容,希望文章能够帮你解决Java: super关键字 final关键字 内部类的定义与使用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。