java-接口与多态练习

目录

前言

      这是我从网上看到的题目,代码自己写的,这次的题目不难,按照步骤来就行了,我觉得题目写的不清不楚的,不过我还是写了。

题目1

  1. 基础概念
  • 什么是接口,如何定义接口?

    • 接口,是Java语言中一种引用类型,是方法的集合。
    • 使用interface关键字接口,其中可以定义抽象方法,默认方法,私有方法,静态方法等方法。
  • 什么叫做多态,条件是什么?
    * 一类事物的行为,具有多种表现形式。
    * 条件:
    * 继承或者实现
    * 方法的重写
    * 父类引用指向子类对象

  • 使用多态特性,带来了什么样的好处?
    * 增强方法的扩展性和服用性

  • 使用多态特性,注意什么样的弊端?
    * 由于类型的提升,导致调用子类对象特有的方法,必须向下转型。

题目2

  1. 按步骤编写代码,效果如图所示:
  • 编写步骤:
    1. 定义接口A,普通类B实现接口A
    2. A接口中,定义抽象方法showA。
    3. A接口中,定义默认方法showB。
    4. B类中,重写showA方法
    5. 测试类中,创建B类对象,调用showA方法,showB方法。

代码如下:

public interface A {
    void showA();
    default void showB(){
        System.out.println("BBBB");
    }
}
public class B implements A {

    @Override
    public void showA() {
        System.out.println("AAAA");
    }
}
public class Test02 {
    public static void main(String[] args) {
        B b = new B();
        b.showA();
        b.showB();
    }
}

题目3

  1. 按步骤编写代码
  • 编写步骤:

    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 interface C {
    void showC();
    //在接口中定义私有方法在1.8版本中是行不通的
    private void show10(String str){
        for(int i = 0;i < 10;i++){
            System.out.println(str);
        }
    }

    default void showD10(String str){
        show10(str);
    }

    default void showE10(String str){
        show10(str);
    }
}
public class D implements C{

    @Override
    public void showC() {
        System.out.println("CCCC");
    }
}
public class Test03 {
    public static void main(String[] args) {
        D d = new D();
        d.showC();
        d.showD10("DDDD");
        d.showE10("EEEE");

    }
}

题目4

  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 interface E {
    void showE();
    static void showF10(String str){
        show10(str);
    }
    static void showG10(String str){
        show10(str);
    }
    private static void show10(String str){
        for(int i = 0;i < 10;i++){
            System.out.println(str);
        }
    }


}
public class F implements E{

    @Override
    public void showE() {
        System.out.println("EEEE");
    }
    static void showH(){
        System.out.println("DDDD");
    }
}
public class Test04 {
    public static void main(String[] args) {
        F f = new F();
        f.showE();
        F.showH();
    }
}

题目5

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

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

代码如下:

public interface Universe {
    public abstract void doAnything();

}

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

        Sun sun = (Sun) universe;
        sun.shine();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值