面向对象三

一、内部类
在Java中,允许在一个类的内部定义类,这样的类称作内部类,这个内部类所在的类称作外部类。

1、 成员内部类
在一个类中除了可以定义成员变量、成员方法,还可以定义类,这样的类被称作成员内部类。
在成员内部类中可以访问外部类的所有成员。例如:

class Outer {
  
private int num- 4;         //定义类的成员变量

//下面的代码定义 r个成员方法,方法中访阿内部类

publie void test() {

Inner inner- new Inner();

inner. show();

        }
        
 //下面的代码定义了一个成员内部类
 
class Inner {

void show() {

//在成员内部类的方法中访问外部类的成员变量System.out.println ("num= "+ num);

                     }
                     
              }
              
       }
       
public class Example16 {

public static void main(String[] args) {

 Outer outer=new Outer();         //创建外 部类对象
 
outer.test();      //调用test()方法

               }

    }

Outer类是一 个外部类,在该类中定义了一个内部类Inner和一个test()方法,其中,Inner类有一个show()方法,在show()方法中访问外部类的成员变量num,test()方法中创建了内部类Inner的实例对象,并通过该对象调用show(方法,将num值进行打印。从运行结果可以看出,内部类可以在外部类中被使用,并能访问外部类的成员。
如果想通过外部类去访问内部类,则需要通过外部类对象去创建内部类对象,创建内部类对象的具体语法格式如下:

外部类名 . 内部类名 变量名= new 外部类名(). new 内部类名();

例如:
public class Example {
public static void main (String [] args) {
Outer . Inner inner = new Outer () . new Inner(); //创建内部类对象
inter. show() ; //调用 show ()方法
}
}

2、静态内部类

关键字来修饰一个成员内部类,该内部类被称作静态内部类,它可以在不创建外部类对象的情况下被实例化。

创建静态内部类对象的语法格式:

       **外部类名. 内部类名   变量名 =  new  外部类名 . 内部类名  ( )  ;**

例题:

 class outer {
 
 private static int num=6;
 
//下面的代码定义了一个静态内部类

static class Inner {

    void show() {
    
       System. out.println ("num="+ num) ;

                         }
                         
            }
            
  }
  
class Example18 {

   public static void main(String[] args) {
   
       Outer. Inner inner=new Outer .Inner ();    //创建内部类对象
       
       inner .show() ;                 //调用内部类的方法
       
                  }
   }

3、方法内部类

方法内部类是指在成员方法中定义的类,它只能在当前方法中被使用。

 class Outer {

 private int num=4;      //定义成员变量
 
   public void test() {

 //下面是在方法中定义的内部类

  class Inner

  void show() {

    System .out .println("num="+ num);     //访问外部类的成员变量8

  }

  Inner in=new Inner();      //创建内部类对象
  
    in.show();      //调用内部类的方法
    
          }

 }

   public class Example19 {

  pubie statice void main (String  [ ] args)  {

 Outer  outer=new  Outer();        //  创建外部类对象

outer  .  test ( );    //   调用test()方法

         }

}

在Outer类的test()方法中定义了一个内部类Inner。由于Inner是方法内部类,因此程序只能在方法中创建该类的实例对象并调用show()方法。从运行结果可以看出,方法内部类也可以访问外部类的成员变量num。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值