【学习笔记】抽象类和接口

抽象类和接口

 

抽象类

抽象类是用 abstract 来修饰的类,抽象方法是用 abstract 来修饰的方法

抽象类:

package com.oop.demo08;
​
public  abstract  class Action {
}
​

抽象方法:

package com.oop.demo08;
​
public  abstract  class Action {
    public  abstract void doSomething();
}
​

抽象方法只有方法名没有方法体

这个抽象方法需要这个类的子类去重写

package com.oop.demo08;
​
public class A extends Action{
    @Override
    public void doSomething() {
        
    }
}

 

抽象类的特点:

1.不能new这个抽象类,只能靠子类去实现它

2.抽象类中可以写普通方法

3.抽象方法必须在抽象类中

 

思考一下?

1.抽象类存在构造器吗?

image-20220718161523195

从图中可以看出,我们没有自己定义构造器是,编译器为抽象类定义了无参的构造器,如果没有的话,那么它的子类将无法编译,因为在子类构造器中首先会执行super()

问题是:既然抽象类不能被实例化,那么构造器的作用是什么?

作用是初始化抽象类内部声明的通用变量,并被各种实现使用。

 

2.抽象类存在的意义?

(1)因为抽象类不能被实例化对象,所以必须要有子类来实现它之后才能使用,这样就可以把一些具有相同属性和方法的组件进行抽象,这样更有利于代码和程序的维护

(2)当又有一个具有相似的组件产生时,只需要实现该抽象类就可以获得该抽象类的那些属性和方法。

 


接口

普通类:只有具体实现

抽象类:具体实现和规范(抽象方法)都有

接口:只有规范!

声明类的关键字是class ,声明接口的关键字是interface

package com.oop.demo09;
​
public interface UserService {
    void add(String name);
    void delete(String name);
    void update(String name);
    void query(String name);
​
}

接口中的方法 默认是 public abstract

 

接口都需要有实现类

类 可以实现接口,通过implements来实现接口

package com.oop.demo09;
​
public class UserServiceImpl implements UserService{
    @Override
    public void add(String name) {
        
    }
    @Override
    public void delete(String name) {
​
    }
    @Override
    public void update(String name) {
​
    }
    @Override
    public void query(String name) {
​
    }
}
​

实现了接口的类,就需要重写接口中的方法

类可以实现多个接口

image-20220718164919379

 

接口中的属性是常量 默认的修饰词是 pulic static final

 

接口总结

1.java的接口是一个约束

2.它可以定义一些方法,可以让不同的人去实现

3.接口中的方法都是 public abstract

4.接口中的属性都是常量 都是 pulic static final

5.接口不能被实例化,没有构造方法

6.类可以实现多个接口,并且必须要重写接口中的方法.

posted @ 2022-07-18 16:55  GrowthRoad  阅读(23)  评论(0编辑  收藏  举报