10--接口&多态

第一题

  • 什么是接口,如何定义接口?

     接口,是Java语言中一种引用类型,是方法的集合。
     使用interface关键定义接口,其中可以定义抽象方法,默认方法,私有方法,静态方法等方法。
    
  • 什么叫做多态,条件是什么?

     一类事物的行为,具有多种表现形式。
     条件:
     	继承或者实现【二选一】
     	方法的重写。
     	父类引用指向子类对象。
    
  • 使用多态特性,带来了什么样的好处?

    增强方法的扩展性和复用性。
    
  • 使用多态特性,注意什么样的弊端?

    由于类型的提升,导致调用子类对象特有的方法,必须向下转型。
    

第二题

  • 语法点:接口

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

  • 编写步骤:

     定义接口A,普通类B实现接口A
     A接口中,定义抽象方法showA。 
     A接口中,定义默认方法showB。
     B类中,重写showA方法
     测试类中,创建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");
  }
}

第三题

  • 语法点:接口

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

  • 编写步骤:

     定义接口A,普通类B实现接口A。
     A接口中,定义抽象方法showA。 
     A接口中,定义私有方法show10(String str),循环打印10次str。
     A接口中,定义默认方法showB10,showC10,分别调用show10方法,传入参数。
     测试类中,创建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");
  }

}

第四题

  • 语法点:接口,静态

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

  • 编写步骤

     定义接口A,普通类B实现接口A。
     A接口中,定义抽象方法showA。 
     A接口中,定义私有静态方法show10(String str),循环打印10次str。
     A接口中,定义静态方法showB10,showC10,分别调用show10方法,传入参数。
     B类中,定义静态方法showD
     测试类中,使用A接口,调用静态showB10方法,showC10方法,
     测试类中,使用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");
  }
}

第五题

  • 语法点:接口,多态

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

  • 编写步骤

     定义接口Universe,提供抽象方法doAnything。
     定义普通类Star,提供成员发光shine方法
     定义普通类Sun,继承Star类,实现Universe接口
     测试类中,创建Star对象,调用shine方法
     测试类中,多态的方式创建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:光照八分钟,到达地球");
  }
}

猜你喜欢

转载自blog.csdn.net/qq_44787898/article/details/106749919
今日推荐