抽象类和接口笔记——2022-03-25
抽象类和接口
抽象类:现实中不存在的东西;
在JAVA中只申明,不实现
抽象方法:使用abstrac来修饰,不可以有方法体,直接用分号结束即可
抽象类:如果一个类中又抽象方法,那么这个类必定是抽象类
特点:
1抽象类不可以创建对象
2抽象类的子类必须重写父类的抽象方法,否则这个子类就必须是抽象类
通过抽象类可以强制要求子类中必须有哪些方法,不写就会报错
小知识点:抽象类中可以有正常的方法;
public abstract class Animal{//类中如果有抽象方法,那么这个类就是抽象类//用abstract修饰方法,这个方法就是一个抽象方法,抽象方法没有方法体,直接用;结束//子类
抽象类特点——课堂笔记
抽象特点:
抽象类和抽象方法必须用abstract关键字修饰 格式:abstract class 类名{ } public abstract void eat();
注意事项:
1.没有具体的实现方法,被定义成抽象方法,而抽象方法是没有方法体的,连大括号都没有
2.如果一个类中存在抽象方法,这个类就必须是抽象类。
3.抽象不能被实例化
问题:那么如何实现实例化里面的东西
需要一个具体的类继承该抽象类,利用多态的形式去创建多态(抽象多态);
4具体的类继承该抽象类就必须实现该抽象类的全部抽象方法
5.抽象类去继承抽象类,可以不用实现父类中的抽象方法
6抽象类中可以存抽象类也可以存非抽象类
7.抽象类中不一定有抽象方法,但有抽象方法的类一定是抽象类;
抽象类员的特点:
成员变量:既可以是变量也可以是称常量
构造方法:有构造方法。因为抽象类不能被实例化。构造方法的作用是用于子类初始化父类。
成员方法:既可以是抽象的,也可以是具体的方法
具体的类继承抽象类,就强制要求子类重写抽象父类的抽象方法
抽象类继承抽象类,可以选择性的实现
**abstract不能和那些关键字共存
private 冲突
//java: 非法的修饰符组合: abstract和private
// private abstract void show();
// private abstract void show();
final冲突
static冲突
接口:最重要的就是接口能把毫不相关是内容整合,使之产生联系在一起。
实际上是一种特殊的抽象类
接口中的所有的方法都是抽象方法
接口使用interfance来申明
特点:1接口中所有的方法都是抽象方法,都是公开的
2接口中所有的变量都是全局静态常量
接口一样具有多态性:更恐怖的是接口支持多继承
/*能继承接口的只能是接口接口和类只能是实现关系implements*/public interfa Valuable{ //接口使用interface来申明,已经不在是类了 //接口中所有的方法都是抽象的,可以省略abstract //接口中所有的方法都是公开的,公共的(public abstract) void getmoney();//接口中所有的方法都是抽象方法,不能有正常的方法}
接口一样具有多态性:
public class Gold implement Valuable{//类用继承,接口用implement //必须要重写抽象方法 public void}
接口:——课堂
接口可以看成一个特殊的类。
接口的特点:1。接口用关键字 interface 表示
格式 interface 接口名{}
2.实现接口用 implements 接口名 { }
3.接口不能实例化
那么接口如何实例化呢?
按照多态的方式,有具体的子类实例化,属于接口多态
4接口的子类
要么是抽象类
要么是具体的类实现接口的所有抽象方法
到目前为止,我们学过那些多态呢?
1具体的类之间的多态(最后)
2.抽象多态(其次是抽象多态)
3、接口多态(最常用的就是接口多态)
接口成员的特点:
成员变量:只能是常量,系统会默认添加 punlic static final 修饰符
构造方法:接口不能被实例化,接口中没有构造方法
成员方法:只能是抽象方法,且系统会默认给出修饰符:public static abstract
最重要:类乐类。类与接口。接口与接口 之间的关系
类与类:继承关系,不能多继承,但是可以多重继承体系;
类与接口:实现关系,一个类可以实现多个接口
接口与接口:继承关系,一个接口可以同时继承多个接口多接口之间用逗号隔开