内部类
内部类就是在一个类的内部再定义一个类。比如,A 类中定义一个 B 类,
那么 B 类相对 A 类来说就称为内部类,而 A 类相对 B 类来说就是外部类了。
1、成员内部类
2、静态内部类
3、局部内部类
4、匿名内部类
package oop.demo14;/** * 内部类 * 内部类就是在一个类的内部再定义一个类。比如,A 类中定义一个 B 类, * 那么 B 类相对 A 类来说就称为内部类,而 A 类相对 B 类来说就是外部类了。 * 1、成员内部类 * 2、静态内部类 * 3、局部内部类 * 4、匿名内部类 */public class Outer { //成员私有属性 private int id = 10; //外部类方法 public void out(){ System.out.println("这是外部类的方法"); } /** * 成员内部类 */ public class Inner{ //成员内部类方法 public void in(){ System.out.println("这是成员内部类的方法"); } //获得外部类的私有属性 public void getId(){ System.out.println(id); } } /** * 静态内部类:static 修饰 */ public static class StaticInner{ //静态内部类方法 public void in(){ System.out.println("这是静态内部类的方法"); } //获得外部类的私有属性 public void getId(){ /** * 此处报错,获取不到 ID,因为程序初次加载 static 静态类, * 而外部类中的私有属性 id 还未出生,当然获取不到 * 除非私有属性静态化,id 通过 static 修饰即可 * 如:private static int id = 10; */ //System.out.println(id); //此处异常 } } /** * 局部内部类 * 类似于局部变量:在方法里面定义的变量叫局部变量 * 同理,在方法里面定义的类叫局部内部类 */ public void method(){ class LocalInner{ public void localIn(){ System.out.println("这是局部内部类的方法"); } } }}/** * 一个 java 类中可以有多个 class 类,但是只能有一个 public class 类 */class A{ public static void main(String[] args) { }}
匿名内部类
package oop.demo14;/** * 匿名内部类 */public class Test { public static void main(String[] args) { /** * 正常 new 一个对象: * 右侧 new 完赋值给左侧,成为一个具体的实例 * new 一个 Apple,这个 Apple 的名字是 apple * 这是正常实例化一个对象,对象名字就叫 apple */ Apple apple = new Apple(); apple.eat(); System.out.println("------------- 分隔符 ------------"); /** * 没有名字初始化类 * new 一个 Apple,直接调用方法 * 具体不知道这个 Apple 是谁,不知道它的名字 * 不用将实例保存到变量中 */ new Apple().eat(); //匿名内部类 /** * 匿名内部类可以 new 一个接口 * 我们说过,一个接口不能通过 new 出来,而是通过 implements 关键字去实现 * 但是在这里就比较特殊了,new 的接口相当于一个匿名内部类,这个匿名内部类通过重写方法实现了这个接口 * 充当匿名内部类的部分如下: * new UserService() { * @Override * public void hello() { * * } * }; * 实现接口 就得重写接口中的方法 这个方法返回一个 userService 对象 */ UserService userService = new UserService() { @Override public void hello() { System.out.println("重写 hello 方法"); } }; }}//定义一个 Apple 类class Apple{ public void eat(){ System.out.println("1"); }}//定义一个 UserService 接口interface UserService{ void hello();}
主程序
package oop.demo14;public class Application { public static void main(String[] args) { //实例化外部类 Outer outer = new Outer(); //通过这个外部类来实例化内部类 Outer.Inner inner = outer.new Inner(); inner.in(); inner.getId(); }}
原文转载:http://www.shaoqun.com/a/484799.html
瀚霖:https://www.ikjzd.com/w/2345
yeepay:https://www.ikjzd.com/w/2574
catch:https://www.ikjzd.com/w/832
Java面向对象之内部类内部类内部类就是在一个类的内部再定义一个类。比如,A类中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对B类来说就是外部类了。1、成员内部类2、静态内部类3、局部内部类4、匿名内部类packageoop.demo14;/***内部类*内部类就是在一个类的内部再定义一个类。比如,A类中定义一个B类,*那么B类相对A类来说就称为内部类,而A类相对B类来说就是外部类了。
easy buy:https://www.ikjzd.com/w/2162
赛兔:https://www.ikjzd.com/w/2375
多维度数据分析表:https://www.ikjzd.com/tl/108075
金丝峡丹江漂流费用?丹江漂流怎么样?:http://tour.shaoqun.com/a/47394.html
最新!近期内地与香港通关指南:https://www.ikjzd.com/home/115376
No comments:
Post a Comment