Java面向对象之内部类详解_第1页
Java面向对象之内部类详解_第2页
Java面向对象之内部类详解_第3页
Java面向对象之内部类详解_第4页
Java面向对象之内部类详解_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第Java面向对象之内部类详解目录前言内部类概述内部类的分类成员内部类局部内部类

前言

在Java中,允许一个类的定义位于另一个类的内部,前者称为内部类,后者称为外部类。本篇博客将总结内部类的使用。

内部类概述

当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服务,那么整个内部的完整结构最好使用内部类。

在Java中,允许一个类的定义位于另一个类的内部,前者称为内部类,后者称为外部类。

内部类一般用在定义它的类或语句块之内,在外部引用它时必须给出完整的名称。

内部类的名字不能与包含它的外部类类名相同;

内部类的分类

内部类分为:

成员内部类(static成员内部类和非static成员内部类)

局部内部类(方法内,代码块内,构造器内)

成员内部类

一方面,作为外部类的成员:

调用外部类的结构。可以被static修饰(注意里面只能调用静态方法,静态属性)。可以被4种不同的权限修饰。

另一方面,作为一个类:

类内可以定义属性、方法、构造器等。可以被final修饰,表示此类不能被继承。可以被abstract修饰。

classPeople{

Stringrace;

Stringcountries;

//静态成员内部类

staticclassMan{

Stringname;

publicMan(){

publicvoiddisplay(){

System.out.println("3090yyds");

//非静态成员内部类

classWomen{

Stringname;

publicWomen(){

publicvoiddisplay(){

System.out.println("化妆");

如何实例化成员内部类的对象

package内部类;

​​​​​​​publicclassDemo{

publicstaticvoidmain(String[]args){

//创建Man对象(静态的成员内部类)

People.Manm=newPeople.Man();

m.display();

//创建Women对象(非静态的成员内部类)

Peoplep=newPeople();

People.Womenw=p.newWomen();

w.display();

}

如何在成员内部类成员中区分调用外部类的对象

package内部类;

publicclassDemo{

publicstaticvoidmain(String[]args){

//创建Women对象(非静态的成员内部类)

Peoplep=newPeople();

People.Womenw=p.newWomen();

w.display("a");

classPeople{

Stringname="niu";

Stringcountries;

publicvoideat(){

System.out.println("吃饭");

//非静态成员内部类

classWomen{

Stringname="aniu";

publicWomen(){

publicvoideat(){

System.out.println("吃蔬菜");

publicvoiddisplay(Stringname){

System.out.println("化妆");

System.out.println(name);//方法的形参

System.out.println();//内部类的属性

System.out.println(P);//外部类的属性

this.eat();//内部类的方法

People.this.eat();//外部类的方法

局部内部类

局部内部类可以在方法内,代码块内,构造器内

classAnimal{

//局部内部类

//构造器内

Animal(){

classDog{

//代码块内

classCat{

//方法内

publicvoidmethod(){

classBird{

}

开发中局部内部类的使用

我们在开发中局部内部类使用较多,比如,我们需要一个方法返回实现了某个接口的类的对象,此时方法内自然就需要一个内部类实现接口!

例:

//返回一个实现了Comparable接口的类的对象

publicComparablegetComparable(){

//创建一个实现了Comparable接口的类---局部内部类

classMyComparableimplementsComparable{

@Override

publicintcompareTo(Objecto){

return0;

returnnewMyComparable();//非匿名内部类的匿名对象

或者是这样

//返回一个实现了Comparable接口的类的对象

publicComparablege

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论