Java 接口&多态习题答案

基础题目

第一题:概念辨析

  1. 什么是接口,如何定义接口?
    • 接口,是Java语言中一种引用类型,是方法的集合。
    • 使用interface关键定义接口,其中可以定义抽象方法,默认方法,私有方法,静态方法等方法。
  2. 什么叫做多态,条件是什么?
    • 一类事物的行为,具有多种表现形式。
    • 条件:
      • 继承或者实现【二选一】
      • 方法的重写。
      • 父类引用指向子类对象。
  3. 使用多态特性,带来了什么样的好处?
    • 增强方法的扩展性和复用性。
  4. 使用多态特性,注意什么样的弊端?
    • 由于类型的提升,导致调用子类对象特有的方法,必须向下转型。

第二题:语法练习

  • 语法点:接口

  • 按步骤编写代码,效果如图所示:
    在这里插入图片描述

  • 编写步骤:

    1. 定义接口A,普通类B实现接口A
    2. A接口中,定义抽象方法showA。
    3. A接口中,定义默认方法showB。
    4. B类中,重写showA方法
    5. 测试类中,创建B类对象,调用showA方法,showB方法。
  • 参考答案.:

      public class Test2 {
          public static void main(String[] args) {
              B b = new B();
              b.showA();
              b.showB();
          }
      }
      
      interface A{
          public abstract void showA();
          public default void showB(){
              System.out.println("BBBB");
          }
      }
      
      class B implements A {
          @Override
          public void showA() {
              System.out.println("AAAA");
          }
      }
    

第三题:语法练习

  • 语法点:接口

  • 按步骤编写代码,效果如图所示:

  • 编写步骤:

    1. 定义接口A,普通类B实现接口A。
    2. A接口中,定义抽象方法showA。
    3. A接口中,定义私有方法show10(String str),循环打印10次str。
    4. A接口中,定义默认方法showB10,showC10,分别调用show10方法,传入参数。
    5. 测试类中,创建B对象,调用showA方法,showB10方法,showC10方法
  • 参考答案.:

      public class Test3 {
          public static void main(String[] args) {
              BB b = new BB();
              b.showA();
              b.show10B();
              b.show10C();
          }
      }
      
      interface AA{
          public abstract void showA();
          public default void show10B(){
             show10("BBBB");
          }
      
          public default void show10C(){
              show10("CCCC");
          }
      
          private  void show10(String str){
              for (int i = 0; i < 10; i++) {
                  System.out.print(str+" ");
              }
              System.out.println();
          }
      }
      
      class BB implements AA {
          @Override
          public void showA() {
              System.out.println("AAAA");
          }
      
      }
    

第四题:语法练习

语法点:接口,静态

  • 按步骤编写代码,效果如图所示:
    Java 接口&多态习题答案_第1张图片
  • 编写步骤
  1. 定义接口A,普通类B实现接口A。
  2. A接口中,定义抽象方法showA。
  3. A接口中,定义私有静态方法show10(String str),循环打印10次str。
  4. A接口中,定义静态方法showB10,showC10,分别调用show10方法,传入参数。
  5. B类中,定义静态方法showD
  6. 测试类中,使用A接口,调用静态showB10方法,showC10方法,
  7. 测试类中,使用B类,调用showA方法,showD方法。
  • 参考答案.:

      public class Test4 {
          public static void main(String[] args) {
             AAA.showB();
             AAA.showC();
              BBB bbb = new BBB();
              bbb.showA();
              BBB.showD();
          }
      }
      
      interface AAA {
          public abstract void showA();
          public static void showB(){
              System.out.println("static BBBB");
      
              show10("BBBB");
          }
      
          public static void showC(){
              System.out.println("static CCCC");
      
              show10("CCCC");
          }
      
          private static void show10(String str) {
              for (int i = 0; i < 10; i++) {
                  System.out.print( str+" ");
              }
              System.out.println();
          }
      }
      
      class BBB implements AAA {
          @Override
          public void showA() {
              System.out.println("AAA");
          }
      
          public static void showD(){
              System.out.println("DDDD");
          }
      }
    

第五题:语法练习

语法点:接口,多态

  • 按步骤编写代码,效果如图所示:
    Java 接口&多态习题答案_第2张图片

  • 编写步骤

    1. 定义接口Universe,提供抽象方法doAnything。
    2. 定义普通类Star,提供成员发光shine方法
    3. 定义普通类Sun,继承Star类,实现Universe接口
    4. 测试类中,创建Star对象,调用shine方法
    5. 测试类中,多态的方式创建Sun对象,调用doAnything方法,向下转型,调用shine方法。
  • 参考答案.:

      	public class Test5 {
      	    public static void main(String[] args) {
      	        Star s  = new Star();
      	        s.shine();
      	
      	        System.out.println("====================");
      	
      	        Universe universe = new Sun();
      	
      	        universe.doAnything();
      	        Sun sun  = (Sun) universe;
      	        sun.shine();
      	    }
      	}
      	
      	interface  Universe{
      	    public abstract void doAnything();
      	}
      	
      	class Star {
      	    public void shine(){
      	        System.out.println("star:星星一闪一闪亮晶晶");
      	    }
      	}
      	class  Sun extends Star implements Universe{
      	    @Override
      	    public void doAnything() {
      	        System.out.println("sun:太阳吸引着9大行星旋转");
      	    }
      	    @Override
      	    public void shine() {
      	        System.out.println("sun:光照八分钟,到达地球");
      	    }
      	}
    

你可能感兴趣的:(java,java基础)