内部类属性方法调用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | package com.Lucky.oop; public class OuterClass { public static void main(String[] args) { //调用外部类方法以及属性: InnerClass inClass= new InnerClass(); inClass.Outer(); inClass.age= 20 ; System.out.println( "外部类的age属性" +inClass.age); //调用内部类方法以及属性[在普通内部类使用]: 外部类的实例.new 内部类(); //小知识:alt+enter :补全代码 InnerClass.inner inner=inClass. new inner(); inner.Inner(); inner.name= "Lucky" ; System.out.println( "内部类的name属性" +inner.name); System.out.println( "------利用内部类调用外部类的方法以及属性------" ); //利用内部类调用外部类的方法以及属性: // 内部类的强大之处:能调用外部类的私有方法以及属性 inner.getOut(); System.out.println( "---静态内部类-----" ); ////////////静态内部类//////////////// //调用内部类方法以及属性[在静态内部类使用]: new外部类.内部类() InnerClass.inner1 inner1 = new InnerClass.inner1(); inner1.kao= "静态内部类属性" ; System.out.println(inner1.kao); inner1.StaticIn(); inner1.tryOut(); System.out.println( "---匿名内部类-----" ); /* 匿名内部类:就是new一个没有名称的内部类实例 正常: InnerClass.inner inner=inClass.new inner(); 现在:inClass.new inner() */ inClass. new inner().getOut(); new niming().add(); } //匿名内部类实例: static class niming{ int ggg; public void add(){ System.out.println( "kkkk" ); } } } |
1 package com.Lucky.oop; 2 3 public class InnerClass { 4 //外部类属性 5 public int age; 6 private String address; 7 8 public static void Outer(){ 9 System.out.println("外部类方法"); 10 } 11 private static void Outer1(){ 12 System.out.println("外部类方法2"); 13 } 14 15 16 //普通内部类 17 class inner{ 18 //内部类属性 19 String name; 20 21 public void Inner(){ 22 System.out.println("内部类方法"); 23 } 24 25 26 ////////////////在内部类中可以调用外部类的私有[private]方法以及属性////////////// 27 public void getOut(){ 28 System.out.println(age); 29 System.out.println(address); //私有属性 30 InnerClass.Outer(); 31 InnerClass.Outer1(); //私有方法 32 } 33 34 35 } 36 //静态内部类 37 static class inner1{ 38 //内部类属性 39 String kao; 40 41 public void StaticIn(){ 42 System.out.println("静态内部类方法"); 43 } 44 45 46 ////////在静态内部类中可以调用外部类的私有[private]方法以及属性【不带static不能调用】////// 47 public void getStatic(){ 48 InnerClass.Outer(); 49 InnerClass.Outer1(); //私有方法 50 } 51 52 public void tryOut(){ 53 /* 54 在静态内部类,无法调用非静态属性 55 除非在属性加上修饰符static,[static是和类同时加载的, 56 不带有static修饰符的属性,会加载的慢, 57 所以就是说:存在的无法调用不存在的 58 ] 59 */ 60 // System.out.println(age); 61 // System.out.println(address); 62 InnerClass.Outer(); 63 InnerClass.Outer1(); // 64 } 65 66 67 } 68 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律