days11--抽象类和接口

Posted 安小猿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了days11--抽象类和接口相关的知识,希望对你有一定的参考价值。

为什么要使用抽象类

直接实例化父类没有任何意义
父类中方法体没有任何意义(子类重写父类方法,把父类方法体覆盖)
避免子类忘记重写父类方法

抽象:

概述:
Java中,一个类所创建的对象没有具体的实体,这个类定义为抽象类。
Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。

作用:避免父类直接实例化,和子类继承父类时没有重写父类中的方法

定义格式:
抽象方法:访问修饰符 abstract 返回值 方法名(); 范例:public abstract void eat();
抽象类:访问修饰符 abstract class 类名{} 范例:public abstract class Animal{}

注意:
1. 抽象方法必须在抽象类中,抽象类中可以有实体方法(包括成员方法和静态方法)
2. 抽象类不能直接实例化(抽象类没有具体实例,实例化没有意义)
3.抽象如何实例化?通过多态的方式,父类的引用指向子类的对象
4.抽象类的子类要么必须重写抽象类中所有抽象方法,要么是抽象类

抽象类中的成员特点

成员变量 :
可以有变量,可以有常量
构造方法:
有构造方法但是不能实例化 构造方法用于子类访问父类数据的初始化
成员方法:
可以有抽象方法:子类必须重写父类抽象方法
可以有非抽象(实体)方法:提高代码的复用性

接口:

概述 接口就是一种公共的规范标准,只要符合标准,大家都可以使用 Java中的接口更多的体现在了对行为的抽象。

格式: 权限访问修饰符 interface 接口名称{}

特点:
1.接口不能被实体类继承,只能被实现
2.接口之间可以继承,可以单继承和多继承
3.类实现接口通过implements实现
范例:public class 类名 implements 接口{}
4.接口不能直接实例化 通过多态的形式(接口回调):接口 接口对象=new 实现类()
5.接口的实现类要么重写接口中的所有抽象方法要么是抽象类
6.接口中的方法(非静态方法)必须都是抽象方法

注意:
1.接口没有构造 ,变量必须初始化
2.权限访问修饰符只有public
3. public abstract可以忽略不写
4.可以有静态的实体方法

接口中的抽象方法写在抽象类中不是也可以吗?为什么要分开?

为了方便管理
属性在抽象父类中
方法(抽象方法)在就接口中

Object

概述:
1.Object是类层次的的顶级父类,每个类都可以将Object作为超类,所有的类都直接或间接继承该类
2.只有一个无参构造public Object(){}
3. 在之前的面向对象中,子类继承父类时,子类构造中默认调用父类的无参构造,因为它们最顶级父类Object只有无参构造

以上是关于days11--抽象类和接口的主要内容,如果未能解决你的问题,请参考以下文章

Java语言中的----抽象类接口

day07_雷神_面向对象进阶

抽象类与接口 day-11.2

Day014 接口

Day21

Python开发基础-Day18继承派生组合接口和抽象类