抽象类和接口 刺骨的言语ヽ痛彻心扉 2022-02-16 18:29 366阅读 0赞 ### 抽象类和接口 ### * * * 前言 * 抽象类 * * * 抽象方法 * 继承抽象类 * 接口 * * * 接口的声明和实现 * 接口的继承 * 接口的特点 * 总结 -------------------- -------------------- ### 前言 ### 把抽象类和接口放在一起整理,是因为感觉它们有很多相像的东西,不过并不能说他们一样。(接口不是类,和类是两种概念。类描述对象的属性和方法。接口则包含类要实现的方法。)可以把接口理解成一种更加抽象的抽象类。 -------------------- ### 抽象类 ### > **在面向对象过程中,所有的对象都是通过类来描述的。如果一个类没足够的信息来描述对象,这个就是抽象类。** 在Java中使用abstract关键字来修饰的类叫抽象类,修饰的方法叫做抽象方法。 //抽象类 abstract class AbsTest{ String name; public AbsTest(){ } //抽象方法 public abstract void print(); public void test(){ } } * 特点: * 抽象类不能实例化。 * 抽象类有构造方法,用来被子类继承。 ##### 抽象方法 ##### > **如果想设计一个类,里面一个成员方法只是声明,让子类来具体实现,那么就可以用abstract来修饰。(注意:类中只要有一个方法是抽象方法,那么这个类必须是抽象类)** * 有一个抽象方法的类必须是抽象类。 * 抽象类并非一定会有抽象方法。 * 没有抽象方法的抽象类的意义是防止外界创造对象。 ##### 继承抽象类 ##### > **综上所述,我们了解了什么是抽象类及基本概念。那么抽象类不能实例化,那又有什么意义呢?可以用什么方法实例化?** 单纯的抽象类的意义就是防止外界创建对象,我们可以通过子类继承抽象类,来实例化子类。(利用多态来实例化抽象类中的抽象方法) abstract class AbsTest{ String name; public AbsTest(){ } public abstract void print(); public void test(){ } } //继承抽象类 class Son extends AbsTest{ //重写抽象方法 public void print(){ System.out.println("我是子类"); } } * 抽象类的子类: * 如果子类想继承抽象类,就必须实现抽象类中的所有抽象方法。 * 如果不想实现抽象方法,那么子类就只能是抽象类。 -------------------- ### 接口 ### > **前言已经说过,接口并不是类,那它是什么呢? > 接口可以看作是一种标准,一种规范。** * 接口无法被实例化,但是可以被实现。 * 一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。 * 另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。 ##### 接口的声明和实现 ##### **接口的声明:** `[访问修饰符] interface 接口名 [extends 其他接口]{...}` interface ITest{ //常量(一般不用) String NAME = null; //抽象方法(隐式抽象,不用加abstract) public void print(); } * 接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。 * 接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。 * 接口中的方法都是公有的。 **接口的实现:** 格式: `[访问修饰符] class 实现类名 implements 接口名[其他接口,...]{...}` //接口 interface ITest{ String NAME = null; public void print(); } //实现类 class Realize implements ITest{ //实现抽象方法 public void print(){ }; } 在实现接口时的一些规则: * 实现类在实现接口的方法时,不能抛出强制性异常,只能在接口中,或者继承接口的抽象类中抛出该强制性异常。 * 实现类在重写方法时要保持一致的方法名,并且应该保持相同或者相兼容的返回值类型。 * 一个类只能继承一个类,但是能实现多个接口。 * 一个接口能继承另一个接口,这和类之间的继承比较相似。 ##### 接口的继承 ##### * 一个接口能继承另一个接口,和类之间的继承方式比较相似。 * 接口的继承使用extends关键字,子接口继承父接口的方法。 * 在Java中,类的多继承是不合法,但接口允许多继承。 public interface Hockey extends Sports, Event ##### 接口的特点 ##### * 接口不能实例化。 * 接口使用interface来修饰。 * 接口是常量和抽象方法的集合。 * 在JDK1.8之后还可以有默认方法和静态方法。 * 如果一个类想实现接口,就必须实现接口中所有的抽象方法。 * 接口很灵活,降低了耦合性。 ### 总结 ### 最后总结一下抽象类和接口的区别吧。 1. 抽象类中可以有普通方法,但接口没有。 2. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。 3. 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。 4. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。 5. 如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧。 6. 如果你想实现多重继承,那么你必须使用接口。由于Java不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它。 -------------------- -------------------- 以上
相关 抽象类和接口类 一、抽象类和接口的定义: 抽象类(abstract class): 使用abstract修饰符修饰的类。 实际点来说,一个抽象类不能实例化,因为“没有包含足够多的信息来描 ╰半夏微凉°/ 2024年03月26日 11:49/ 0 赞/ 110 阅读
相关 java 抽象类和接口——抽象类 文章目录 抽象类 抽象类概念 抽象类语法 抽象类特性 抽象类的作用 抽象类总结 抽象类 ゝ一世哀愁。/ 2023年10月05日 23:24/ 0 赞/ 113 阅读
相关 抽象类和接口 转自牛客网 题目![题目][Center] 1、抽象类中的抽象方法(其前有abstract修饰)不能用private、static、synchronized、n 男娘i/ 2022年06月15日 01:29/ 0 赞/ 285 阅读
相关 抽象类和接口 一、抽象类 1、基本概念 在Java语言中,使用关键字abstract来修饰的类称之为抽象类。抽象类的功能是将子类可能具有的共同功能(类成员方法)和属性(类成员属性 旧城等待,/ 2022年06月01日 22:40/ 0 赞/ 294 阅读
相关 抽象类和接口 抽象类和接口 一、抽象类的特点 \ a:抽象类和抽象方法必须用abstract关键字修饰 \ abstract 我就是我/ 2022年05月20日 00:50/ 0 赞/ 352 阅读
相关 接口和抽象类 接口就是一份契约,方法名,返回值,抛出的异常你都得按照我的来。 抽象类包含一组具体的特征,比如某些品牌特定型号的汽车,底盘,控制电路,刹车系统等是抽象出来的特征,是一样的,但 以你之姓@/ 2022年04月15日 00:39/ 0 赞/ 337 阅读
相关 抽象类和接口 抽象方法: abstract:抽象的。可以修饰方法和类。 抽象:模糊、不具体。 抽象方法 1.使用关键字abstract修饰。 2.抽象 本是古典 何须时尚/ 2022年03月28日 10:18/ 0 赞/ 374 阅读
相关 抽象类和接口 1.抽象类 包含抽象方法的类必须声明为抽象类,但抽象类可以不包含任何抽象方法 抽象类是不可以被实例化的 2.接口 接口中所有的方法都是抽象的 接口中定义的方法默认使用 向右看齐/ 2021年09月26日 13:04/ 0 赞/ 471 阅读
相关 接口和抽象类 接口和抽象类的区别,实不相瞒,我忘记了? > 在Java基础部分,接口和抽象类是相当重要的知识点,尤其是接口,在后面的开发中,经常会见到这么四个字“面向接口编程",而且对 ﹏ヽ暗。殇╰゛Y/ 2021年09月08日 11:44/ 0 赞/ 553 阅读
还没有评论,来说两句吧...