1 //四大内部类的定义区 2 class Text2{ 3 //成员内部类定义 4 class San{ 5 private int bian1; 6 private int bian2; 7 private int bian3; 8 San(){ 9 } 10 San(int bian1,int bian2,int bian3){ 11 this.bian1=bian1; 12 this.bian2=bian2; 13 this.bian3=bian3; 14 } 15 public void setBian1(int bian1){ 16 this.bian1=bian1; 17 } 18 public void setBian2(int bian2){ 19 this.bian2=bian2; 20 } 21 public void setBian3(int bian3){ 22 this.bian3=bian3; 23 } 24 public int getBian1(){ 25 return bian1; 26 } 27 public int getBian2(){ 28 return bian2; 29 } 30 public int getBian3(){ 31 return bian3; 32 } 33 public int getZhou(){ 34 return getBian1()+getBian2()+getBian3(); 35 } 36 } 37 //成员内部类中定义了一个局部内部类 38 class People{ 39 private String name; 40 private int age; 41 private String sex; 42 private int height; 43 People(){ 44 this.name="你猜"; 45 this.age=10000; 46 this.sex="你再猜"; 47 this.height=-1000; 48 } 49 People(String name){ 50 this(); 51 this.name=name; 52 } 53 People(String name,int age){ 54 this(name); 55 this.age=age; 56 } 57 People(String name,int age,String sex){ 58 this(name,age); 59 this.sex=sex; 60 } 61 People(String name,int age,String sex,int height){ 62 this(name,age,sex); 63 this.height=height; 64 } 65 public void setName(String name){ 66 this.name=name; 67 } 68 public void setAge(int age){ 69 this.age=age; 70 } 71 public void setSex(String sex){ 72 this.sex=sex; 73 } 74 public void setHeight(int height){ 75 this.height=height; 76 } 77 public String getName(){ 78 return name; 79 } 80 public int age(){ 81 return age; 82 } 83 public String getSex(){ 84 return sex; 85 } 86 public int getHeight(){ 87 return height; 88 } 89 public void operate(){ 90 final String str1="嘎嘎,我比较懒,但是我确实会算术,因为我会调用,会重载~~~"; 91 final String str2="很会说话~~~"; 92 final String str3="小子,你发现了没有,我的名字已经改成了"; 93 class Inner{ 94 public void hello(){ 95 System.out.println(People.this.getName()+str2); 96 } 97 public void operate(){ 98 System.out.println(str1); 99 } 100 public void setName(){ 101 System.out.println(str3+People.this.getName()); 102 } 103 } 104 Inner inner=new Inner(); 105 inner.hello(); 106 inner.operate(); 107 inner.setName(); 108 } 109 } 110 //静态内部类的定义 111 static class Point{ 112 private int x; 113 private int y; 114 Point(){ 115 x=-1; 116 y=-1; 117 } 118 Point(int x){ 119 this(); 120 this.x=x; 121 } 122 Point(int x,int y){ 123 this(x); 124 this.y=y; 125 } 126 public void setX(int x){ 127 this.x=x; 128 } 129 public void setY(int y){ 130 this.y=y; 131 } 132 public int getX(){ 133 return x; 134 } 135 public int getY(){ 136 return y; 137 } 138 } 139 //一个抽象类的定义,用于客户端匿名内部类来实现抽象方法 140 abstract class ChongZai{ 141 public void printl(){ 142 System.out.println("这里是重载练习区"); 143 } 144 public abstract void print(); 145 public abstract void print(String a); 146 public abstract void print(String a,String b); 147 } 148 149 } 150 class Text1{ 151 public static void main(String[] args){ 152 System.out.println("题目一:"); 153 Text2 t2=new Text2(); 154 Text2.San san=t2.new San(10,10,10); 155 System.out.println("三角形周长为:"+san.getZhou()); 156 System.out.println("题目二:"); 157 Text2.People peo=t2.new People("张三",18,"男",180); 158 System.out.println("我的名字叫:"+peo.getName()); 159 peo.setName("李四"); 160 peo.operate(); 161 System.out.println("题目三:"); 162 System.out.println("点的坐标是:"+new Text2.Point(3,10).getX()+" "+new Text2.Point(3,10).getY()); 163 System.out.println("题目四:"); 164 Text2.ChongZai c=t2.new ChongZai(){ 165 public void print(){ 166 System.out.println("内部类好麻烦~~"); 167 } 168 public void print(String a){ 169 System.out.println(a); 170 } 171 public void print(String a,String b){ 172 System.out.println(a); 173 System.out.println(b); 174 } 175 }; 176 c.printl(); 177 c.print(); 178 c.print("内部类一是成员内部类,二是局部内部类"); 179 c.print("内部类三是静态内部类,它就像静态成员一样使用","内部类四就是我,我叫做匿名内部类"); 180 } 181 }