当前位置 博文首页 > 文章内容

    接口&多态

    作者: 栏目:未分类 时间:2020-08-11 16:01:00

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    基础题目

    第一题:概念辨析

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