抽象类的概念
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类的功能
还是类,有类的基本功能:成员变量、成员方法和构造方法的访问方式和普通类一样。
不同与普通类:不能直接实例化对象
默认的访问
不能private修饰:编译报错:Error : ( ) java:非法的修饰符组合:abstract和private
不能被final和stastic修饰:因为抽象方法需要被子类重写
必修被继承,而且子类要重写父类的方法;否则子类也是抽象类要用abstract修饰
抽象类可以有构造方法供子类使用
抽象类的作用
抽象类本身不能实例化 要使用必须创建子类;
有些类的使用,在使用场景中只会用到子类,只会用父类;
而有些时候我们会不小心使用成父类,但是编译器又不会报错;
而抽象类就解决了这一问题!相当于多了一重编译器的校验!!
抽象类的方法
- 抽象类分为 普通方法 和 抽象方法!
- 抽象方法不能有 ‘ 体 ’(方法体的体),也就是说 不能加 { } ;因为这个括号就代表着体;
- 子类必须重写抽象方法!
代码理解
public abstract class Animal { int age; String color; String name; public Animal(int age, String color, String name) { this.age = age; this.color = color; this.name = name; } public void bark() {//这是一个普通方法! System.out.println(name+"叫了一下!"); } //这是一个抽象方法!不能有方法体,必须由子类重写 abstract public void walk(); }