java抽象类 final类 interface 接口与类的区别

新建一个抽象父类:

如果在一个方法前写了abstruct抽象方法  抽象方法没有方法体 不能直接被调用  如果这个类有抽象方法  那么一定在前面加上抽象方法  抽象方法必须由子类重写方法  抽象类不能被实例化  抽象类一般做父类使用  他声明了一些方法  但没有去实现  交给子类去实现  构造方法用于对类的成员变量进行初始化

//抽象方法 abstract
//对于不知道该怎么实现的方法,我们可以声明为抽象方法
//抽象方法只有声明,没有实现
//如果 一个类包含抽象方法,那么这个类必须声明为抽象类(abstract class)
public abstract void eat();
//加上abstract 定义抽象类
//抽象类中不一定有抽象方法
public abstract class Animal {

    private String name;
    private String color;

    public Animal() {
        super();
    }

    public Animal(String name, String color) {
        super();
        this.name = name;
        this.color = color;
    }


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

再新建一个子类:

public class Tiger extends Animal {

    @Override
    public void eat() {
        System.out.println("吃人了~");

    }

}


新建main方法运行类:
 

public class Application1 {
    public static void main(String[] args) {
        /*
         * 抽象类的特点:
         * 1、不能创建抽象类的对象
         *      Animal animal = new Animal(); 不能用
         * 2、抽象类可以有抽象方法
         * 3、抽象类的子类必须实现所拥有的抽象方法,否则子类也要是抽象类
         */

        Tiger tiger = new Tiger();
        tiger.eat();

        //抽象的作用:
        //作为模板而存在,定义一组子类共有的属性和方法
        //这个模板是没有具体意义的,通过abstract 禁止创建对象
        //强制子类必须重写抽象方法
        //让程序变得更稳定
    }
}

final  类的特点 

 被final修饰的类不能被继承   final的属性和变量  不能被重新赋值  系统都会给final默认的初始值  在声明时赋值  final不能再子类中覆盖  也就是final不能被重写   final能修饰变量属性 类方法  

interface  接口

类实现多个接口弥补了类不能多继承的缺点   具体的接口和类的区别如下:

接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。

抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。

人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它.

所以,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口)。

第一点. 接口是抽象类的变体,接口中所有的方法都是抽象的。而抽象类是声明方法的存在而不去实现它的类。
第二点. 接口可以多继承,抽象类不行
第三点. 接口定义方法,不能实现,而抽象类可以实现部分方法。
第四点. 接口中基本数据类型为static 而抽类象不是的。

当你关注一个事物的本质的时候,用抽象类;当你关注一个操作的时候,用接口。

 

抽象类的功能要远超过接口,但是,定义抽象类的代价高。因为高级语言来说(从实际设计上来说也是)每个类只能继承一个类。在这个类中,你必须继承或编写出其所有子类的

所有共性。虽然接口在功能上会弱化许多,但是它只是针对一个动作的描述。而且你可以在一个类中同时实现多个接口。在设计阶段会降低难度的。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值