Java 中没有抽象方法的抽象类的由来

一个类中的所有方法为抽象方法则可以把这个类定义为抽象类(此时类中的抽象方法格式书写默认)

抽象类中可以不定义抽象方法

抽象类不能创建对象

方法全为抽象方法的抽象类——接口(接口中的方法的格式都是默认好的)

【没有抽象方法的抽象类的由来】

package Exercises;

/*
//没有抽象方法的抽象类的由来
抽象类中可以不定义抽象方法,之所以定义为抽象类是为了使这个类不能创建对
 */
interface Inter{
    //四种显示方式
    public void show1();
    public void show2();
    public void show3();
    public void show4();
}
//定义子类,要使用第一种显示方式
class InterIMPL1 implements Inter{
    public void show1(){
        System.out.println("show1 run....");
    }
    //仅仅实现show1 是不正确的(仅实现显示1 InterIMPL 相当于还是一个抽象类)为了使该类实例化,还要覆盖其他三个方法
    //实现其他的抽象方法
    public void show2(){}
    public void show3(){}
    public void show4(){}

}
//定义子类,要使用第四种显示方法
class InterIMPL2 implements Inter{
    public void show4(){
        System.out.println("show4 run...");
    }
    public void show1(){}
    public void show2(){}
    public void show3(){}
}
/*
这样调用出现的问题
当实现接口中的部分功能时,在两个实现中都有代码重复的部分,大大减小了的代码的复用性
解决方式:
抽取实现类中的共同部分,组成一个类
具体思想:用一个类来空实现接口中的所有方法,再用不同的类通过继承来重写实现类中的方法,加大代码的复用性
 */
abstract class InterIMPL implements Inter{  //将接口空实现,定义为一个没有抽象方法的抽象类——无法定义对象
    public void show1(){}
    public void show2(){}
    public void show3(){}
    public void show4(){}
}
class InterIMPL3 extends InterIMPL{
    public void show1(){
        System.out.println("show1 run!!!!!!");
    }
}
class InterIMPL4 extends InterIMPL{
    public void show4(){
        System.out.println("show4 ru!!!!!!");
    }
}
public class interfaceDemo {
    public static void main(String[] args){
        InterIMPL1 in1=new InterIMPL1();
        in1.show1();
        InterIMPL2 in2=new InterIMPL2();
        in2.show4();
        InterIMPL3 in3=new InterIMPL3();
        in3.show3();
        InterIMPL4 in4=new InterIMPL4();
        in4.show4();
    }
}

//解决问题:只是用接口中的部分功能,提高代码的复用性,

具体:用一个类去空实现接口,再用具体实现的子类继承实现类,重写实现类中的方法。创建子类的对象就可以调用对应的方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值