类的基本形式4(对象数组的使用,内部类)

1.对象数组的使用

对象也可以用数组来存放,必须有两个步骤:(1)声明类类型的数组变量,并用new分配内存空间给数组(2)用new产生新的对象,并分配内存空间给它

例:要创建三个Car类类型的数组元素

Car c[]=new Car[3];//创建Car类类型的数组元素,并 分配内存空间

动态初始化,利用for循环完成对象数组内的初始化操作

例:  for(int i=0;i<c.length;i++){

                  c[i]=new Car();

         }

静态初始化

例:   Car c[]={new Car(),new Car(),new Car()};

public class Car {
          String color;
          String name;
          Car(String c,String n){
              color=c;
              name=n;
          }
         String show(){
              return "这是"+color+name;
          }
}
public class car1 {

    public static void main(String[] args) {
        Car c[]={new Car("红色","奥迪"),new Car("白色","大众"),new Car("黑色","奔驰")}; 
           for(int i=0;i<c.length;i++){
               System.out.println(c[i].show());
           }
    }

}

运行结果:

这是红色奥迪
这是白色大众
这是黑色奔驰

2.内部类

内部类的基本格式:

标识符 class 外部类名称{

  //外部类的成员

       标识符 class 内部类名称{

            //内部类的成员

         }

  }

 内部类可以直接调用外部类中的属性,外部类不可以访问内部类声明的属性。内部类用static声明后,内部类不能访问非static定义的外部类属性

public class out1 {
      int score;
          void show(){
              in1 in=new in1();
              in.talk();
          }
      class in1{
          void talk(){
              System.out.println("他的分数是;"+score);
          }
      }
      
}
public class out11 {

    public static void main(String[] args) {
        out1 out=new out1();
        out.score=98;
        out.show();

    }

}

3.在类外部引用内部类

内部类可以通过创建对象从外部类之外被调用,只要将内部类声明成public。

public class out1 {
      int score;
          void show(){
              in1 in=new in1();
              in.talk();
          }
      public class in1{
          void talk(){
              System.out.println("他的分数是;"+score);
          }
      }
      
}
public class out11 {

    public static void main(String[] args) {
        out1 out=new out1();
        out1.in1 in=out.new in1();//用外部类的对象实例化内部类的一个对象
        out.score=98;
        in.talk();

    }

}

4.在方法中定义内部类

public class out1 {
    int score;
    void show() {
        class in1 {
            void talk() {
                System.out.println("他的分数是;" + score);
            }
        }
        in1 in = new in1();
        in.talk();
    }

}
public class out11 {

    public static void main(String[] args) {
        out1 out=new out1();
        out.score=98;
        out.show();
    }
}

在方法中定义的内部类只能访问方法中的final类型的 局部变量,因为用final定义的局部变量相当于是一个常量,它的生命周期超出方法运行的生命周期

public class out1 {
    int score;
    void show(final String s) {
        final String name="lindy";
        class in1 {
            void talk() {
                System.out.println(name+s+"的分数是;" + score);
            }
        }
        in1 in = new in1();
        in.talk();
    }

}
public class out11 {

    public static void main(String[] args) {
        out1 out=new out1();
        out.score=98;
        out.show("数学");
    }
}

 

转载于:https://www.cnblogs.com/dongdong-wang/p/6699318.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值