1.成员内部类如何实现调用?(一)(组图)

Java基础-内部类零、知识点子查询-如果能回答出以下问题,则不必往下看了

1.内部类的访问特点?

2.成员内部类定义在哪里?

3.成员内部类如何实现调用?提示:方法一、方法二

4.局部内部类定义在哪里?

5.局部内部类如何实现调用?提示:方法一、方法二

6.匿名内部类本质?

7.匿名内部类如何实现调用?提示:方法一、方法二

一、内部类的访问特点

1.内部类可以直接访问外部类的成员,包括私有

2.外部类要访问内部类的成员,必须创建对象

二、内部类的分类1.成员内部类:定义在类内部方法一:直接调用,内部类修饰为publlic

package chart6;
public class demo6_7 {
	private int num=10;
	public class Inner{
		public void show(){
			System.out.println(num);
		}
//	public void method(){
//		Inner inner=new Inner();
//		inner.show();
//	}
	
	public static void main(String[] args){
//		方法一
		demo6_7.Inner inner= new demo6_7().new Inner();
		inner.show();
//		方法二

//		demo6_7 demo6_7=new demo6_7();
//		demo6_7.method();
	}
}

方法二:间接调用,内部类修饰为private,不允许外部直接调用

package chart6;
public class demo6_7 {
	private int num=10;
	public class Inner{
		public void show(){
			System.out.println(num);
		}
	}
	public void method(){
		Inner inner=new Inner();
		inner.show();
	}
	
	public static void main(String[] args){
//		方法一
//		demo6_7.Inner inner= new demo6_7().new Inner();
//		inner.show();
//		方法二
		demo6_7 demo6_7=new demo6_7();
		demo6_7.method();
	}	
}

2.局部内部类:定义在方法内部,外界无法直接访问

主函数想要调用内部类需要使用间接调用

调用逻辑:主函数->外部类.method()->内部类.show()

package chart6;
import org.omg.CORBA.PUBLIC_MEMBER;
public class Outer {
	private int num=10;
	int num2=20;
	public void  method(){		
		
		class Inner{
			public void show(){
				System.out.println(num);
				System.out.println(num2);
			}
		};
//		创建内部类对象,并调用方法
		Inner inner=new Inner();
		inner.show();
	};
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Outer outer=new Outer();
		outer.method();
	}
}

图片[1]-1.成员内部类如何实现调用?(一)(组图)-唐朝资源网

局部内部类是在方法中定义的类,所以外界是无法直接使用,需要在方法内部创建对象并使用,该类可以直接访问外部类的成员,也可以访问方法内的局部变量

3.匿名内部类:本质是一个继承了该类或者实现了该接口的子类匿名的对象

前提:存在一个类或者接口,这里的类可以是具体类也可以是抽象类

格式:

new 类名或者接口名(){
	重写方法;
}

样例前提:匿名内部类需要实现的接口

package chart6;
public interface Inter {
	void show();
}

方法一:匿名内部类.show()方法

在method方法内部直接通过new定义一个Inter类,主函数想要调用内部类的show()需要在匿名内部类的尾部追加【.show()】才能实现,这样做,如果想重复调用,则实现起来繁琐。

调用逻辑:主函数->外部类.method()->内部类.show()【通过.show()直接调用】

package chart6;
import com.sun.webkit.ContextMenu.ShowContext;
public class Outer2 {
	
	public void method(){
//		方法一
		new Inter(){
			public void show(){
				System.out.println("匿名内部类");

			}
		}.show();
//		方法二
//		Inter inter=new Inter(){
//			public void show(){
//				System.out.println("匿名内部类");
//			}
//		};
//		inter.show();
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Outer2 outer2=new Outer2();
		outer2.method();
	}
}

方法二:类对象=匿名内部类

在method方法内部直接通过new定义一个Inter类,主函数想要调用内部类的show(),需要将匿名内部类赋值给一个对象变量,通过这个变量调用show方法

调用逻辑:主函数->外部类.method()->内部类变量.show()【内部类赋值给变量调用show()】

package chart6;
import com.sun.webkit.ContextMenu.ShowContext;
public class Outer2 {
	
	public void method(){
//		方法一

图片[2]-1.成员内部类如何实现调用?(一)(组图)-唐朝资源网

// new Inter(){ // public void show(){ // System.out.println("匿名内部类"); // } // }.show(); // 方法二 Inter inter=new Inter(){ public void show(){ System.out.println("匿名内部类"); } }; inter.show(); } public static void main(String[] args) { // TODO Auto-generated method stub Outer2 outer2=new Outer2(); outer2.method(); } }

问题重现,如果回答不出来,请回看

1.内部类的访问特点?

2.成员内部类定义在哪里?

3.成员内部类如何实现调用?提示:方法一、方法二

4.局部内部类定义在哪里?

5.局部内部类如何实现调用?提示:方法一、方法二

6.匿名内部类本质?

7.匿名内部类如何实现调用?提示:方法一、方法二

© 版权声明
THE END
喜欢就支持一下吧
点赞286赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容