首页 > 其他 > 详细

内部类

时间:2021-05-05 21:26:02      阅读:23      评论:0      收藏:0      [点我收藏+]

内部类

成员内部类

package com.oo.oop.insideClass;
?
public class Outer {
   private int id=999;
   public void out(){
       System.out.println("外部类方法");
  }
?
  public class Inner{  //成员内部类
       public void in(){
           System.out.println("内部类方法");
      }
       //内部类获得外部类的私有属性,私有方法
       public void getID(){
           System.out.println(id);
      }
  }
}
?

 

package com.oo;
?
?
import com.oo.oop.insideClass.Outer;
?
// 一个项目应该只有一个main()方法
public class Application {
   public static void main(String[] args) {
?
       Outer outer = new Outer();
       //通过外部类来实例化内部类
       Outer.Inner inner = outer.new Inner();
       inner.in();  //内部类方法
       inner.getID();//999
  }
}
?

 

静态内部类

静态内部类在类前加static关键字,有和正常的内部类一样的特性------无法访问非静态的属性和方法

 

局部内部类

和局部变量,具有局部变量的特性

package com.oo.oop.insideClass;
?
public class Outer {
?
   public void method(){
       class Inner{//局部内部类 和局部变量类似
           public void in(){
               
          }
?
      }
  }
}
?

 

匿名内部类

package com.oo.oop.insideClass;
?
public class Test {
   public static void main(String[] args) {
       //没有名字初始化类,不用把实例保存到变量中
       //匿名内部类
       new Fruit().eat();
       //这个其实就是实现了下面接口功能的类,但是没有名字
       //返回了一个UserService对象,但是没有名字
       /*UserService userService = */new UserService(){
           @Override
           public void hello() {
?
          }
      };
  }
?
}
class Fruit{
   public void eat(){
       System.out.println("吃水果");
  }
}
interface UserService{
   void hello();
}
?

 

内部类

原文:https://www.cnblogs.com/Share-my-life/p/14732312.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!