Java抽象类与接口

一、抽象类

抽象类的定义:
当一个类被abstract关键词修饰时,该方法称为抽象类。

public abstrac class 类名{
代码块;
}

抽象方法的定义:
当一个类的方法被abstract关键词修饰时,该方法称为抽象方法,抽象方法所在的类必须定义为抽象类。抽象方法与普通方法相比没有方法体。

public abstrac class 类名{
  [访问修饰符] abstract 返回值类型 方法名();
}

二、接口

概念性的接口,指系统对外提供的所有服务。
通俗的来说接口是一个不能实例化的类型,是一种约定所以接口中没有构造方法,定义接口使用interface关键字修饰。
定义接口类型与定义类相似,接口中的成员变量默认都是public static final类型,默认方法都是public abstract类型的抽象方法。
实现接口使用implements关键字,实现类中必须实现接口中所定义的所有抽象方法。

public interface 接口名{
   String 常量=初始值 //静态常量
   public void 方法名();     //抽象方法
}
public 类名 implement 接口名{
  public void 方法名(){
 代码块;
 }
}

接口特性:
1.接口不能被实例化
2.实现类必须实现接口的所有方法,除非这个类是抽象类
3.实现类可以实现多个接口
implements 多个接口使用逗号隔开
4.接口中的变量都是静态常量
5.接口可以多实现(一个类可以实现多个接口),用逗号分隔
6.接口中的所有方法默认都是公共抽象方法
在这里插入图片描述

例:
采用面向接口编程思想组装一台计算机
在这里插入图片描述

public interface CPU {
//    String brand="Intel";
//    String HZ="3.8GHz";
    String getbrand();
    String getHZ();
}
public interface EMS {
//    String rongLiang="3000GB";
    String getrongLiangE();
}
public interface HardDisk {
//    String rongLiang="4G";
    String getrongLiangH();
}

public class computer implements CPU,EMS,HardDisk {
    @Override
    public String getbrand() {return "三星";}
    @Override
    public String getHZ() {
        return "3.8GHz";
    }
    @Override
    public String getrongLiangE() {
        return "3000GB";
    }
    @Override
    public String getrongLiangH() {
        return "4GB";
    }
    public void Show(computer c){
        System.out.println("计算机的信息如下:");
        System.out.println("CPU的品牌是:"+c.getbrand()
                +",主频是:"+c.getHZ()+"\n硬盘容量是:"
                +c.getrongLiangE()+"\n内存容量是:"
                +c.getrongLiangH());
    }
//    public void show(){
//        System.out.println("计算机的信息如下:");
//        System.out.println("CPU的品牌是:"+CPU.brand+"主频是:"+CPU.HZ);
//        System.out.println("硬盘容量是:"+EMS.rongLiang);
//        System.out.println("内存容量是:"+HardDisk.rongLiang);
    public static void main(String[] args) {
        computer c = new computer();
        c.Show(c);
    }
}

抽象类VS接口

  1. 相同点:
    代表系统的抽象层
    都不能被实例化
    都能包含抽象方法 用于描述系统提供的服务,不必体提供具体实现
  2. 不同点:
    在抽象类中可以实现普通方法,而接口不能 抽象类便于复用,接口便于代码维护
    一个类只能继承一个直接的父类,但可以实现多个接口
  3. 使用原则:
    接口做系统与外界交互的窗口 接口提供服务
    接口本身一旦制定,就不允许随意修改
    抽象类可以完成部分功能实现,还有部分功能可作为系统的扩展点(多态的部分)

三、总结

Java中的接口
属性全都是全局静态常量
方法都是全局抽象方法
无构造方法
一个类可以实现多个接口,非抽象类实现接口时必须实现接口中的全部方法
抽象类利于代码复用,接口利于代码维护

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值