JAVA之抽象类与接口

1.抽象类的定义

如果一个类没有足够的信息来描述一个具体的对象,而需要其他具体的类来支撑它,这样的类我们称之为“抽象类”
抽象类是不能实例化的;
抽象类】是指用abstract关键字进行修饰的类,类中定义 【不含方法体的方法】(抽象方法)。
abstract class 类名
{
数据成员;
构造方法;
普通方法;
abstract 返回类型 方法名(参数列表);
abstract 返回类型 方法名(参数列表);
}
普通类】是一个完善的功能类,可以直接实例化对象,并且在普通类中可以包含有构造方法,普通方法,static 方法,常量和变量等内容。
抽象方法】:Java中可以定义不含方法体的方法,方法的方法体由该类的【子类】根据自己的情况去实现,使用abstract修饰,这样的方法称为【抽象方法】。abstract 返回类型 方法名(参数列表)---只抽象功能声明,未具体实现功能实现
注意点】:
1.抽象类和抽象方法都必须用关键字abstract
2.抽象类是不能实例化的,实例化的工作应该由抽象子类来完成
3.含有抽象方法的类必须声明未抽象类(即:含抽象方法类必为抽象类)
抽象类必须被继承,且抽象方法必须由其子类进行具体实现,除非其子类也是抽象类
4.抽象类存在构造方法,用于给子类对象进行初始化,并且子类对象实例化的时候,依然满足先执行父类构造,再执行子类构造的顺序。
5.抽象类一定是一个父类,子类覆盖其抽象方法后,才可以对子类进行实例化。
6.如果抽象方法的子类不能实现父类所有的抽象方法,子类必须定义为抽象类。
7.包含抽象方法的类必须为抽象类
8.抽象类可以不包含抽象方法。但是这种抽象类依旧不能进行实例化,这种类是用来定义新子类的基类(父类)
抽象子类的抽象方法 覆盖 父类方法】:
子类可以覆盖父类的方法,将父类的方法定义为abstract,使用场景:当父类的方法实现在子类中变得不合法时这样做是很有用的。在这种情况下,子类必须定义为abstract.
抽象类 用作 数据类型
例如:
A[] geo = new A[10];
geo[0] = new Circle(2.0);

2.接口

接口相关了解】:
接口,英文称作interface,在软件工程中,接口泛指人们调用的方法或者函数,它是对行为的抽象。
java中的接口,是一种与类相似的结构,它只包含常量和抽象方法。接口在许多方面都与抽象类很相似,但是它的目的是指明多个对象的共同行为。
接口定义语法】:
接口是常量和抽象方法的集合,是能力、规范、协议的反映,定义语法如下:
接口中的数据字段(常量)隐含为public static final
接口中的方法隐含为public abstract
[修饰符]interfae InterfaceName [extends superInerfaceList]{
    [public][static][final] 常量;
    [public][abstract] 方法;
}
接口实现语法】:
[修饰符] class<类名> [extends 父类名][implements interfaceList]{
    //类体
}
修饰符:可选参数,用于制定类的访问权限,可选值为public,abstract和final
类名:必选参数,用于指定类的名称,类名必须是合法的Java标识符,一般情况下,要求首字母大写
extens 父类名:可选参数,用于指定要定义的类继承于哪个父类。当使用extends关键字时,父类名为必选参数
implements interfaceList:可选参数,用于指定该类实现的是哪些接口

可继承的父类只有一个,可实现的接口有无数个
接口注意事项】:
(1)interface 的所有方法的访问权限自动被声明为public;
(2)接口中的成员变量为不可变的常量,因为它默认为public static final,可以通过接口名直接访问:implementname.name;
(3)接口中不存在实现的方法,只有抽象方法;
(4)实现接口的非抽象类必须实现接口的所有方法,而实现接口的抽象类不用实现接口的方法。
(5)在实现多接口的时候一定要避免接口中的方法名的重复。
(6)不能使用new操作符实例化一个接口,但可以声明一个接口变量,该变量必须引用(refer to)一个实现该接口的类的对象。可以使用instanceof检查一个对象是否实现某个特定的接口。

-----------------------------------------END--------------------------------------
全部评论

相关推荐

不愿透露姓名的神秘牛友
今天 10:25
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务