网页建站点seo实战密码在线阅读
news/
2025/9/29 17:13:08/
文章来源:
网页建站点,seo实战密码在线阅读,连云港网站关键词优化服务,wordpress怎么编辑最近看到一道面试题#xff1a;内部类可以引用它的包含类的成员吗#xff1f;有没有什么限制#xff1f; 答案大部分都是这样子的#xff1a; 完全可以。如果不是静态内部类#xff0c;那没有什么限制#xff01; 一个内部类对象可以访问创建它的外部类对象的成员包括私有…最近看到一道面试题内部类可以引用它的包含类的成员吗有没有什么限制 答案大部分都是这样子的 完全可以。如果不是静态内部类那没有什么限制 一个内部类对象可以访问创建它的外部类对象的成员包括私有成员。 如果你把静态嵌套类当作内部类的一种特例那在这种情况下不可以访问外部类的普通成员变量而只能访问外部类中的静态成员。 对于初学者来说这样的回答可定会一脸懵逼就想着把四种内部类【静态内部类成员内部类局部内部类匿名内部类】整理一下如果有错误的地方欢迎大家多多指教。 一、静态内部类它是用static修饰的在访问限制上它只能访问外部类中的static所修饰的成员变量或者是方法 演示代码public class Test_01 { private static int a 20;//重点1如果没有static修饰的话此处编译时就会报错 public static class test01{ public void test() { System.out.println(a); } } public static void main(String[] args) { Test_01.test01 test new Test_01.test01(); test.test(); }} 二、成员内部类成员内部类是最普通的内部类它可以无条件访问外部类的所有成员属性和成员方法包括private成员和静态成员。 演示代码 class Circle { private double radius 0; public static int count 1; public Circle(double radius) { this.radius radius; } class Draw { //内部类 public void drawSahpe() { System.out.println(radius); //重点2外部类的private成员 System.out.println(count); //外部类的静态成员 } }} 【注意】当成员内部类拥有和外部类同名的成员变量或者方法时会发生隐藏现象即默认情况下访问的是成员内部类的成员。如果要访问外部类的同名成员需要以下面的形式进行访问 外部类.this.成员变量 外部类.this.成员方法 三、局部内部类局部内部类是定义在外围类的方法中的在访问的时候它可以直接访问外围类的所有成员但是不能随便访问局部变量除非这个局部变量被final修饰。 演示代码 public void getinfo() { final int a 0;//重点3这里如果没有final修饰的话编译的时候就会报错 class pps5 { public void test() { System.out.println(a); } } new pps5().test();} 四、匿名内部类 1、匿名内部类其实就是局部内部类的简写格式只能使用一次。2、定义匿名内部类的前提 内部类必须是继承一个类或者实现接口。3、匿名内部类的格式 new 父类或者接口(){定义子类的内容}4、其实匿名内部类就是一个匿名子类对象可以理解为带内容的对象。5、匿名内部类中定义的方法最好不要超过3个。 演示代码 interface Person { public abstract void study(); } class PersonDemo { public void method(Person p) { p.study(); } } class PersonTest { public static void main(String[] args) { PersonDemo pd new PersonDemo() { //重点4new 父类名或接口名() { 重写的方法体} override public void study() { System.out.println(好好学习天天向上); } }); //当调用匿名内部类次数比较少时用这种方式可以节省内存空间。 } } 总结 内部类的访问规则 1、内部类可以直接访问外部类中的成员包括私有。 之所以可以直接访问外部类中的成员是因为内部类中持有了一个外部类的引用格式 外部类名.this 2、外部类要访问内部类必须建立内部类对象。访问格式1,当内部类定义在外部类的成员位置上而且非私有时可以直接建立内部类对象在外部其他类中进行访问格式 外部类名.内部类名 变量名 外部类对象.内部类对象; Outer.Inner in new Outer().new Inner();2,当内部类在成员位置上就可以被成员修饰符所修饰。 比如private将内部类在外部类中进行封装。 static:内部类就具备static的特性。 当内部类被static修饰后只能直接访问外部类中的static成员。出现了访问局限。 在外部其他类中如何直接访问static内部类的非静态成员呢 new Outer.Inner().function(); 在外部其他类中如何直接访问static内部类的静态成员呢 outer.Inner.function(); 注意当内部类中定义了静态成员该内部类必须是static的。 当外部类中的静态方法访问内部类时内部类也必须是static的。 使用场景 当描述事物时事物的内部还有事物该事物用内部类来描述。因为内部事务在使用外部事物的内容。 内部类定义在局部时 1、不可以被成员修饰符修饰 2、可以直接访问外部类中的成员因为还持有外部类中的引用。 但是不可以访问它所在的局部中的变量。只能访问被final修饰的局部变量。 想要更详细的推荐大家去这里http://www.cnblogs.com/dolphin0520/p/3811445.html转载于:https://www.cnblogs.com/wanglingling/p/7675918.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/922035.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!