#Android学习计划# #第2期# 接口和抽象类的理解和区别!!!!

本文探讨了Android开发中抽象类和接口的基本概念,包括抽象类的定义、特点和实现方式,以及接口的特性与实现。抽象类作为子类模板,不能实例化,可以包含已实现的方法。接口则更抽象,是类间协议,无具体实现,需通过implements关键字在类中实现。文章还强调了抽象类的单继承特性与接口的多实现差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     大家好,今儿和大家一起来学习,共同探讨一下接口和抽象都是什么?有什么区别?

      话不多说,直接一梭子。

抽象类

          1、什么是抽象类?

                抽象类是用来映射子类的通用特性的,不能被实例化。

                只能被用来做子类的超类,用来创建子类的模板。

           2、语法:

                 抽象类中可以定义方法,也可以有方法实现,也可以没有方法实现。

            3、实现:

                 1)子类使用extends关键字来继承抽象类,如果子类不是抽象类,需要实现我们父类中的所有的抽象方法。

                 2)单继承,父类就比父亲,子类就好比儿子。一个父亲可以有若干个儿子,而一个儿子只能有一个父亲,实际的应                    用中有,BaseActivity和各个Activity之间的关系

                  3)修饰符:可以public、protected、default

           例子:

//我是base层,我是父类
public static class Base{
    //这个是定义方法的
    abstract void init();
    abstract void findViewById(View view);

    //这个是定义实现方法主体的
    abstract void haha(){
        Log.i("我是base中的实现方法主体的方法");
    }

}

    

//我是子类
public class LoginActivity extends Base{
    //当我们的子类非静态的时候,base中的方法我们必须全部实现、
@Override
    public void init(){
        //初始化代码
    }
@Override
    public int findViewById(){
        return R.layout.activity_login;
      }
@Override
    public void haha(){
        log.i(我是子类);
        }
}

//当我们的子类是抽象的时候,我们可以选择我们想要实现的部分进行实现。


public abstract class LoginActivity extends Base{
    //当我们的子类非静态的时候,base中的方法我们必须全部实现、
@Override
    public void init(){
        //初始化代码
    }

}

 

接口

           1、什么是接口?

                     接口是比抽象类更加抽象的一个“非类”,毕竟它是一个虚的一个概念,不是真实的可以new出来的。

                    接口是用来建立类与类之间的协议的。没有具体的实现,只能通过关键字implements在我们需要的类中实现这个接口。

           2、语法:

                   关键字来实现。接口可以进行多实现。

           3、例子:

//定义接口,提供一些我们公共的方法。
public interface Base{
    //定义一个接口a
    void a();
    //定义一个接口b
    void b();

}

public interface Base2{
    //定义一个接口
     void c();

}
//接口可以多实现
public class LoginActivity implements Base,Base2{
//Base中的方法实现
    @Override
    public void a(){}
    @Override
    public void b(){}
//Base2中方法的实现
    @Override
    public void c(){}
}

抽象类和接口的区别?     

//参考https://blog.youkuaiyun.com/jessenpan/article/details/38148775的整理的表格。

参数抽象类接口
默认的方法实现它可以有默认的方法实现接口完全是抽象的。它根本不存在方法的实现
实现子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现。子类使用关键字implements来实现接口。它需要提供接口中所有声明的方法的实现
构造器抽象类可以有构造器接口不能有构造器
与正常Java类的区别除了你不能实例化抽象类之外,它和普通Java类没有任何区别接口是完全不同的类型
访问修饰符抽象方法可以有publicprotecteddefault这些修饰符接口方法默认修饰符是public。你不可以使用其它修饰符。
main方法抽象方法可以有main方法并且我们可以运行它接口没有main方法,因此我们不能运行它。
多继承抽象方法可以继承一个类和实现多个接口接口只可以继承一个或多个其它接口
速度它比接口速度要快接口是稍微有点慢的,因为它需要时间去寻找在类中实现的方法。
添加新方法如果你往抽象类中添加新的方法,你可以给它提供默认的实现。因此你不需要改变你现在的代码。如果你往接口中添加方法,那么你必须改变实现该接口的类。

          

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值