java中的抽象类和接口
抽象类、抽象方法(abstract抽象类)
//继承了抽象类的子类,都必须重写(实现)它的所有 抽象方法(一般方法不用) //除非子类也是抽象类,那就由它的子子类重写(实现)
//abstract抽象类
//继承了抽象类的子类,都必须重写(实现)它的所有 抽象方法(一般方法不用)
//除非子类也是抽象类,那就由它的子子类重写(实现)
public abstract class Action { public abstract void doSomething(); //抽象方法 public void test(){ }; }
package com.basics.demo4; public class A extends Action { //重写抽象类里面的抽象方法 @Override public void doSomething() { } }
//1、不能new这个抽象类,只能靠子类去实现它;约束
//2、抽象类中可以写普通的方法 //
3、抽象方法必须在抽象类中
接口(interface)
//接口都会与实现类 public interface UserService { //接口中的所有定义的方法中其实都是抽象的 public abstract //public abstract void add(); //等效于 void add(); //int age = 99; 等效于 //public static final int age = 99; int age = 99; void add(String name); void delete(String name); void update(String name); void query(String name); }
函数式接口
函数式接口就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的的接口
函数式接口可以被隐式转换为lambda表达式
实现接口
public class UserServiceImp1 implements UserService,TimeService{ //里面是接口方法的重写的方法 //类似可以实现多继承 , 伪多继承 }
作用:
1、约束
2、定义一些方法,让不同的人实现
4、public static final
5、接口不能被实例化,因为接口中没有构造方法
6、可以实现多个接口
7、必须要重写接口中的方法
抽象方法特点
abstract修饰符:
1.abstract修饰的类为抽象类,此类不能有对象,(无法对此类进行实例化,说白了就是不能new);
2.abstract修饰的方法为抽象方法,此方法不能有方法体(就是什么内容不能有);
抽象类的使用特点:
1.抽象类不能有对象,(不能用new此关键字来创建抽象类的对象);
2.有抽象方法的类一定是抽象类,但是抽象类中不一定有抽象方法;
3.抽象类中的抽象方法必须在子类中被重写。
接口特点
接口中的所有定义的方法中其实都是抽象的 public abstract
public abstract void add();
等效于 void add();
int age = 99; 等效于
public static final int age = 99;
接口不能被实例化,因为接口中没有构造方法
类可以实现多个接口,必须要重写接口中的方法
至于接口和抽象类的区别:
最明显的一个区别就是他们的实现:一个是接口,一个是类
接口的实现就是去实现这个接口,而且java中一个类可以实现多个接口。 但接口里面只能写接口,不能写普通方法。
而抽象类必须通过继承去实现,并且java中是单继承的。 但抽象类中除了可以写抽象方法外,还可以写普通方法。
本人也正处于学习阶段,这是本人的一些学习笔记和理解,不正确的地方还请理解和指正。