接口&多态

基础题目

第一题:概念辨析

  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");
        }
    
    }

  

第四题:语法练习

  • 语法点:接口,静态

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

  • 编写步骤

  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");
        }
    }

  

第五题:语法练习

  • 语法点:接口,多态

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

  • 编写步骤

    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:光照八分钟,到达地球");
            }
        }

 

posted @ 2020-08-11 15:53  极地阳光-ing  阅读(260)  评论(0编辑  收藏  举报