抽象类
在Java中,类的方法各种各样。如果,我们定义了一个类中的一个方法而不去实现它即不去描写方法体。那么,称这个方法为抽象方法,抽象方法所在的类为抽象类。
关于抽象类:
- 抽象方法只有名称没有实现
- 抽象类不一定有抽象方法,但有抽象方法的类一定是抽象类
- 抽象类不可以实例化,但可以作为父类引用
- 抽象类中可以有普通方法和属性以及构造方法
- 抽象类的子类必须重写实现抽象方法不然子类也只能是抽象方法
- 用修饰符 abstract 修饰抽象方法和抽象类
示例:
public abstract class Action {
public Action() {
}
public abstract void eat();//抽象方法
public void ren() {
System.out.println("Action");
}
}
public class A extends Action {
public A() {
}
@Override //重写实现抽象方法
public void eat() {
System.out.println("A");
}
public static void main(String[] args) {
Action a = new A();
a.eat();
}
}
抽象类无法实例化,但可以通过子类,用多态的方法父类的引用指向子类的对象。
抽象方法主要由子类来实现,因此该方法不能是private、static、final修饰符修饰。
注意方法体为空与不实现方法的区别。
接口
在Java中,有时需要从多个类中派生一个类来继承它们的方法和属性。但是,Java没有多继承只有单继承。于是就有了接口。
接口是一种约束、规范。是项目中最稳定的东西,面向接口编程是面向对象编程的重中之重。
接口:用 interface 修饰,接口中只有抽象方法和常量。
接口与类:接口由类来实现 ,格式:类名 implements 接口名。一个类实现接口必须重写接口中所有的抽象方法,不然该类只能是抽象类。一个类可以实现多个接口。
示例:
public interface UserService {
void add();
void delete();
void update();
void query();
}
public class User implements UserService,Uessr {
@Override
public void out() {
}
@Override
public void add() {
}
@Override
public void delete() {
}
@Override
public void update() {
}
@Override
public void query() {
}
}
小结:
1、接口是一种约束,标准
2、提供一些方法,让不同用户去实现
3、接口可以有常量public static final
4、接口提供抽象方法
5、implements 类可以实现多个接口
6、类实现接口必须重写方法
7、接口和抽象类不能被实例化,但可以作为父类引用