当前位置: 首页 > news >正文

今科网站建设公司磁力引擎

今科网站建设公司,磁力引擎,厂家制服定做,口碑做团购网站什么是内部类?当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服 务,那么这个内部的完整结构最好使用内部类。在 Java 中,可以将一个类定义在另一个类或者一个方法…

        什么是内部类?当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服 务,那么这个内部的完整结构最好使用内部类。在 Java 中,可以将一个类定义在另一个类或者一个方法的内部,前者称为内部类,后者称为外部类。内部类也是封装的一种体现。

class Teacher{private String name;private int age;class Friend{//内部类}}

内部类必须在类的里面,不然即使它们在同一个文件,也不是内部类,并且内部类和外部类共用同一个java源文件,但是经过编译之后,内部类会形成单独的字节码文件 ,其中外部类的字节码文件名为Teacher.class,而内部类的字节码文件为Teacher&Friend.class。有没有发现这些字节码文件名的规律?是不是类名后加一个.class啊,如果是内部类的话,则在前面加上外部类的名和&就行。那么内部类里面能不能再添加一个内部类呢?当然可以,并且它的字节码文件和前面的规律一样。都是在外部类名后面加&,比如Teacher&Friend&Student.class。一个类里面可以有多个内部类,但是还是不建议在类里面定义多个内部类。

 内部类的分类

           根据内部类定义的位置不同,一般可以分为以下几种形式:
1. 成员内部类(普通内部类:未被static修饰的成员内部类 和 静态内部类:被static修饰的成员内部类)
2. 局部内部类(不谈修饰符)、匿名内部类
注意:内部类其实日常开发中使用并不是非常多,日常开始中 使用最多的是匿名内部类。
实例内部类:即未被static修饰的成员内部类。
class Teacher{private String name;private int age;class Friend{private String name;private int age;private int height;}}

既然被叫做成员内部类,那么是否有和成员变量一样的性质呢?我们都知道,当我们创建一个对象时,里面的成员变量都会被创建,那么如果我创建外部类对象时,内部类是否会被创建呢?答案是不会,内部类对象需要我们手动创建,那么我们可不可以单单只创建实例内部类对象而不创建外部类对象呢?这可不行,它是属于外部类的,怎么可能外部类对象(儿子)还没生出,就生出内部类对象(孙子)呢(滑稽)。那么我们应该如何创建内部类对象呢?我们应先创建外部类对象,然后用对象名来(.)来创建内部类对象。

Teacher teacher = new Teacher();
Teacher.Friend friend1 = teacher.new Friend();
Teacher.Friend friend2 = new Teacher().new Friend();

对象名前面的就是它的类型,那么可不可以不加Teacher呢?很可惜,不行,如果你不写前面的话,那我们怎么确定它到底是外部类还是内部类,是谁的内部类啊。如果内部类中的成员变量的名字与外部类的成员变量的名字相同的话,我们如何在内部类中使用外部类变量,我们不可能用super,虽然我前面说它们是父子,但它们关系却并不是父子关系,因此我们得使用其他方法去使用,要在内部类中使用外部类变量的话,我们只需这么写

name = Teacher.this.name;//内部调用外部,后面的是内部类成员

我们得知道,实例内部类的注意事项,才能更好的使用它

1. 外部类中的任何成员都可以在实例内部类方法中直接访问
2. 实例内部类所处的位置与外部类成员位置相同,因此也受publicprivate等访问限定符的约束
3. 在实例内部类方法中访问同名的成员时,优先访问自己的,如果要访问外部类同名的成员,必须:外部类名称.this.同名成员 来访问。
4. 实例内部类对象必须在先有外部类对象前提下才能创建
5. 实例内部类的非静态方法中包含了一个指向外部类对象的引用
6. 外部类中,不能直接访问实例内部类中的成员,如果要访问必须先要创建内部类的对象。

静态内部类static修饰的内部成员类称为静态内部类。

静态内部类与实例内部类的用法大差不差,只有两个注意事项。

1. 在静态内部类中只能访问外部类中的静态成员
      
2. 创建静态内部类对象时,不需要先创建外部类对象
Teacher.Student student = new Teacher.Student();
Teacher teacher = new Teacher();
Teacher.Student student1 = teacher.new Student();//报错

若static修饰成员变量的话,虽然java不建议通过对象来使用静态成员变量,但是任然可以正常运行,不过如果static修饰内部类的话,则不能通过对象名来使用内部类。

局部内部类:定义在外部类的方法体或者{}中,该种内部类只能在其定义的位置使用,一般使用的非常少,此处简单了解下语法格式。

class Teacher{public void method(){class Frind{}}}
【注意事项】
1. 局部内部类只能在所定义的方法体内部使用
2. 不能被publicstatic等修饰符修饰
3. 编译器也有自己独立的字节码文件,命名格式:外部类名字$数字内部类名字.class
4. 几乎不会使用

匿名内部类:都被称为匿名了,那么肯定没有类的名字,是通过实现接口来创建内部类,这个在实际中运用的最多,后续我们再说。

new Iswim(){@Overridepublic void swim() {}
};

这个就是匿名内部类,{}里面的是接口Iswim的方法的重写,{}里面才是被匿名的类的主体。

http://www.hkea.cn/news/148577/

相关文章:

  • 虚拟机怎么做网站空间培训班管理系统 免费
  • wordpress离线文章发布郑州seo关键词排名优化
  • 龙岗区网站建设中国职业培训在线
  • 南山网站建设外包优化网站
  • 个人怎么做网站推广神起网络游戏推广平台
  • 做网站的关键技术运营推广的方式和渠道有哪些
  • jsp做就业网站网推项目
  • 网站开发的目的和意义重庆seo排名电话
  • 顺义专业建站公司最有效的线上推广方式
  • 大连网站网站搭建制作百度识图 上传图片
  • 给人做网站多少钱黑科技引流推广神器怎么下载
  • 沈阳做网站最好的公司百度快照怎么删除
  • 设置本机外网ip做网站网站免费制作平台
  • 有什么推荐做简历的网站2024的新闻有哪些
  • 申请做网站 论坛版主惠州seo外包服务
  • 网站照片上传不了域名解析ip
  • 胖小七网站建设2022最新国际新闻10条简短
  • wordpress 网站备份厦门seo外包服务
  • 网站建设及推广培训杭州百度快照优化排名
  • 简单手机网站开发软件关键词排名代发
  • visio画网站开发类图注册域名后怎么建网站
  • 道里网站运营培训北京网络营销咨询公司
  • 目前做网站流行的语言seo关键词排名优化哪家好
  • 长沙营销型网站制作费用seo图片优化
  • 学生诚信档案建设网站seo数据分析
  • 北京住房城乡建设厅网站首页1688官网入口
  • 网站建设需要懂什么软件徐州百度seo排名优化
  • wordpress网站样式网站排名查询
  • 郑州网站建设推销外贸网站推广与优化
  • 当当网站开发系统说明搜索引擎排名google