目录
🌤️抽象类概念
🌤️抽象类语法
🌤️抽象类的作用
⛅接口的概念
⛅接口的语法
⛅接口的使用
⛅接口的特性
.......
🌤️抽象类概念
在面向对象的概念中,所有对象都是通过类来描述的,但并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的类,这样的类就是一个抽象的类
🌤️抽象类语法
1. 抽象类的方法使用abstract修饰类,没有具体的实现;
2.抽象类当中可以包含普通类所能包含的成员;
3.抽象类不能被实例化(new),所以他存在的最大意义就是被继承;
//Error:(30,23) java: Shape是抽象的;无法实例化
4.如果一个普通类继承了一个抽象类,此时必须重写抽象类当中的方法;
5.如果1个抽象类A继承了1个抽象类B,此时A不需要重写B当中的抽象方法,但如果有人继承A,则需要重写;
6.抽象方法不能是private的;(因为抽象方法就是用来重写的,你都私有了还咋重写)
abstract class Shape{
abstract private void draw();
}
//编译报错
Error:(4,27) java:非法的修饰符访问组合:abstrat和private
7.final,static 和abstract是不能共存的,因为抽象方法要被子类重写
8.抽象类必须被继承,并且继承后子类要重写父类的抽象方法,否则子类也是抽象类,必须使用abstract修饰,
9.抽象类中不一定包含抽象方法,但是抽象方法的类一定是抽象类;
10.抽象类当中可以有构造方法,是为了子类直接调用,来初始化抽象类当中的成员。
🌤️抽象类的作用
很多语法的存在就是为了预防出错,例如:final,创建的用户不去修改,不就相当于常量了,但是加上final能够在不小心误修改的时候让编译器及时提醒我们,从而充分利用编译器的校验,在实际开发中是非常必要的!
抽象类本身不能被实例化,要想使用,只能创建该抽象类的子类,然后让子类重写抽象类中的方法。实际工作不由父类完成,有子类完成,那麽此时如果不小心用成父类了,使用普通编译器是不会报错的,但是父类就会在实例化时候提示错误,让我们尽早发现问题。
⛅接口的概念
接口可以看成是多个类的公共规范,是一种引用数据类型。
⛅接口的语法
1.接口的定义方式与类基本相同,将class关键字换成interface关键字,就定义了一个接口;
public inerface 接口名称{ //抽象方法 public abstract void method1();//public abstract 是固定搭配,可以不写 public void method2(); abstract void method3(); void method4(); //接口中上述方法都是抽象写法,更推荐写法4. }
⛅接口的使用
🌩️必须有一个 实现类 来 实现 该接口,实现接口中所有抽象方法。
public class 类名 implements 接口名{
//....
}
注意:子类和父类是extends关系,类与接口是implements关系。
⛅接口的特性
1.接口是一种引用类型,但不能直接new接口对象;
2.接口中每一个方法都是public的抽象方法,即接口中的方法会被隐式的指定为public abstract.
3.接口中的方法不能在接口中实现,只能在类中实现;
4.重写接口中的方法时,不能使用default(默认) 访问权限修饰;
5.接口中可以含有变量,但是接口中的变量会被指定为public static final变量;
6.接口中不能含有静态代码块和构造方法;
7.接口虽然不是类,但是编译完后字节码文件后缀也是.class;
8.如果类中没有实现接口的所有抽象的方法,则类必须设置成抽象类;
9.jdk8中:接口还可以包含default方法;