内部类

内部类

  内部类:将一个类定义在另外一个类里面。里面的那个类就叫做内部类(内置类)。
  访问特点:
内部类可以直接访问外部类的成员,包括私有成员。可以访问外部类成员的原因,是因为内部类可以使用外部类的引用。格式为:外部类对象名.this.成员
        但是外部类访问内部类必须要建立内部类对象。
当其他外部类访问此内部类时,访问格式为:外部类名.内部类名   变量 =  new 外部类对象.new 内部类对象。
内部类也可以被修饰,如:public、private
<pre name="code" class="java">package com.itheima;

class OuterClass{
	private String name;
		
	class InnerClass{
		void show(){
			System.out.println("my name is:"+name);	
			System.out.println("my name is:"+OuterClass.this.name);		
		}
		
		void getName(String name){
			OuterClass.this.getName(name);
		}
	}  
	
	void getName(String name){
		this.name = name;
	}
	
	void makeMethod(){
		InnerClass inner = new InnerClass();
		inner.show();
	}
}

public class InnerDemo {
	public static void main(String[] args){
		OuterClass outer = new OuterClass();
		outer.getName("嘻嘻");
		outer.makeMethod();
		OuterClass.InnerClass inner  = new OuterClass().new InnerClass();
		inner.getName("呵呵");
		inner.show();
	}
}
 
 
 

当内部类被static修饰时,要访问外部类的成员,外部类的成员必须是静态的。
 当内部类被static修饰时,其他外部类访问内部类成员,当成员不是静态时。
 访问格式:new 外部内名.内部类对象.成员
  当内部类被static修饰时,其他外部类访问内部类成员,当成员是静态时。
 访问格式:外部类名.内部类名.成员
当内部类被static修饰时,要访问此外部类的成员
访问格式:外部类名.成员变量
class OuterClass1{
	private static String name;
	static class InnerClass1{
		void show(){
			System.out.println("my name is:"+name);
		}
		void getName(String name){
			OuterClass1.name = name;
		}
	}
	
	static class InnerClass2{
		static void show(){
			System.out.println("my name is:"+name);
		}
		static void getName(String name){
			OuterClass1.name = name;
		}
	}
	
	class InnerClass3{
		void show(){
			System.out.println("my name is:"+name);
		}
		void getName(String name){
			OuterClass1.name = name;
		}
	}
}


public class StaticInnerClassDemo {
	public static void main(String[] args){
		new OuterClass1.InnerClass1().getName("嘻嘻");
		new OuterClass1.InnerClass1().show();
		
		OuterClass1.InnerClass2.getName("呵呵");
		OuterClass1.InnerClass2.show();
	}
	
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值