黑马程序员--内部类

------- android培训java培训、期待与您交流! --------
 

内部类
 (1)把类定义在一个类的内部。


 (2)特点:
  A:内部类可以直接使用外部类的成员,包括私有。
  B:外部类要使用内部类成员,必须创建对象使用。


 (3)内部类的分类:
  局部内部类:定义在方法中的内部类
  成员内部类:定义在类中方法外的内部类


 (4)成员内部类
  class Outer {
   class Inner {
   
   }
  }

  普通的修饰的时候:
   外部类名.内部类名 变量 = 外部类对象.内部类对象;
   Outer.Inner oi = new Outer().new Inner();

   class Outer {
   static class Inner {
   
   }
  }
  用静态修饰后:
   外部类名.内部类名 变量 = 外部类名.内部类对象
   Outer.Inner oi = new Outer.Inner();

  成员内部类:
   private:为了数据的安全。
   static:为了方便调用。

 

 


 (5)局部内部类
  A:带名字的局部内部类
   class Outer {
    public void method() {
     final int a = 10;
     class Inner {
      public void show() {
       System.out.println("show");
       System.out.println(a);
      }

      Inner i = new Inner();
      i.show();
     }
    }
   }


  B:匿名内部类(掌握)
   a:没有名字的内部类。其本质是一个对象。
   b:前提:存在一个抽象类或者接口。
   c:格式:
    new 抽象类或者接口() {
     重写父类方法;
    };

    本质:是一个继承了类或者实现了接口的子类匿名对象。

 

以下代码为局部内部类:

package cn.itcast;
/*
 * 局部内部类
 */
public class Demo {
	public static void main(String[] args) {
		Outer out = new Outer();
		out.method();
	}
}
class Outer{
	String name = "张三 ";
	public void method(){
		final String sex = "男";
		
		class Inner{
			private int age;
			public void getOutName(){
				System.out.println(name);
				//System.out.println(age);
				System.out.println(sex);
			}
		}
		Inner in = new Inner();
		System.out.println(in.age);
		in.getOutName();
	}
}


 

运行结果为:

0
张三 
男


 

 

以下为匿名内部类代码:

package cn.itcast;

public class Demo2 {
	public static void main(String[] args) {
		Animal animal = new Animal() {
			public void eat() {
				System.out.println("八戒吃了");
			}
		};
		animal.eat();
	}
}
//抽象类
abstract class Animal{
	String name;
	public abstract void eat();
	}


 

运行结果为:

八戒吃了

 

 

 


------- android培训java培训、期待与您交流! -------- 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值