java中的抽象类和接口 抽象类、抽象方法(abstract抽象类) 接口(interface) 抽象方法特点 接口特点 至于接口和抽象类的区别:

//继承了抽象类的子类,都必须重写(实现)它的所有 抽象方法(一般方法不用) //除非子类也是抽象类,那就由它的子子类重写(实现)

 //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、定义一些方法,让不同的人实现

3、public abstract

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中是单继承的。  但抽象类中除了可以写抽象方法外,还可以写普通方法。

本人也正处于学习阶段,这是本人的一些学习笔记和理解,不正确的地方还请理解和指正。