分别通过成员内部类、方法内部类、匿名内部类完成接口Ball,在测试类BallTest中的调用(尤其是内部类实现接口的一些注意事项)

任务

一、任务分析

1.创建接口Ball

  • 包含抽象方法play()

2.创建外部类BallTest

  • 定义方法void playBall(Ball ball),调用接口中的play()方法

3.分别通过成员内部类、方法内部类以及匿名内部类完成接口实现

  • 在BallTest中,创建成员内部类Inner_m实现接口Ball,在类中重写play()方法,输出两条信息,分别为"成员内部类:"和"打篮球"
  • 在BallTest中,创建成员方法info(),在方法中创建方法内部类Inner_f实现Ball接口,重写play()方法,输出三条信息,分别为"**************”、“方法内部类:”和"打乒乓球"
  • 在BallTest中,创建成员方法info(),在方法中创建方法内部类Inner_f实现Ball接口,重写play()方法,输出三条信息,分别为"**************","方法内部类:"和"打乒乓球"

4.创建测试类Test,通过创建BallTest类及相关内部类实例,调用相关方法,依次完成相关内部类测试。

二、实现代码

1.Ball.java(接口)

public interface Ball {
 void play();
}

2.BallTest.java

public class BallTest {
	public void playBall(Ball ball) {
		ball.play();
	}
	//成员内部类
	public Inner_m getInner_m() {
		return new Inner_m();
	}
	public void play() {
		
	}
	 public class Inner_m implements Ball{
		public void play() {
			// TODO Auto-generated method stub
		System.out.println("成员内部类");
		System.out.println("打篮球");
		}
	 }
	 //方法内部类
	 public  Ball  info() {
		 class Inner_f implements Ball {

			@Override
			public void play() {
				// TODO Auto-generated method stub
				System.out.println("*************");
				System.out.println("方法内部类:");
				System.out.println("打乒乓球");
			}
			
//			 public void play() {
//				System.out.println("*************");
//				System.out.println("方法内部类:");
//				System.out.println("打乒乓球");
//			}
		 }return new Inner_f();
		// return new Inner_f().play();
	 }
//	public class Inner_m implements Ball{
//		public void play() {
//			System.out.println("成员内部类");
//			System.out.println("打篮球");
//		}
//		public void info() {
//		 class Inner_f implements Ball{
//				public void play() {
//					System.out.println("********************");
//					System.out.println("方法内部类:");
//					System.out.println("打乒乓球");
//				}
//			}
//		}
//	}
//public void playBall(Ball ball) {
//	ball.play();
//}
}

3.Test4.java

public class Test4 {
    public void getPlay(BallTest balltest) {
    	balltest.play();
    }
	public static void main(String[] args) {
		// TODO Auto-generated method stub
     //成员内部类对象实例,方式1:new 外部类.new 内部类
//	 BallTest.Inner_m one=new BallTest().new Inner_m();
//     one.play();
     //成员内部类对象实例, 方式2:外部类对象.new 内部类
      BallTest bt1=new BallTest();
//     Inner_m two=bt1.new Inner_m();
//     two.play();
     //成员内部类对象实例, 方式3:外部类对象.获取方法
     Inner_m three=bt1.getInner_m();
     three.play();
     //方法内部类
     //Test4   t4=new Test4(); 
     BallTest bt2=new BallTest();
     Ball ball=bt2.info();
     ball.play();
     Test4 four=new Test4();
     four.getPlay(new BallTest() {
    	 public void play() {
    		 System.out.println("***************");
    		 System.out.println("匿名内部类");
    		 System.out.println("打排球");
    	 }
     });
	}

}

4.运行图片

发布了90 篇原创文章 · 获赞 50 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/qq_40307919/article/details/104338543