Java——–抽象类
- 抽象类为所有的子类创建了一个通用模板,子类可以在这个模板上进行扩展
- 通过抽象类,我们可以严格的控制子类设计的随意性,使子类之间更加通用
abstract class Machine{
}
abstract class Machine{
public void aa(){
}
}
abstract class Machine{
public abstract void hello();
//这种定义方法是错误的
class Machine{
public abstract void hello(){
}
}
通过上述代码 我们可以看出来
- 只有抽象类才可以定义抽象方法,
- 含有抽象方法的类一定是抽象类
- 抽象类不一定要有抽象方法
- 抽象方法不能有具体的代码实现,在定义完成后,不能存在大括号,而且要在后面加上分号
我们来看一下下面的代码
abstract class Machine{
public abstract void mm();
}
class A extends Machine{
@Override
public void mm() {
// TODO Auto-generated method stub
}
}
通过上面的代码,可以得出,子类继承了抽象类,必须重写它的抽象方法。
public class Test02 {
public static void main(String[] args) {
//这里定义会报错误
Machine aMachine=new Machine();
}
}
abstract class Machine{
public abstract void mm();
}
class Car extends Machine{
@Override
public void mm() {
// TODO Auto-generated method stub
}
}
抽象类不能实例化对象,
abstract class Machine{
String name;
abstract String name;
public abstract void mm();
public Machine(){
}
//这种定义是错误的,
public abstract Machine(){
}
}
构造方法不能够抽象。成员变量也不能够抽象化。
public class Test02 {
public static void main(String[] args) {
Car c=new Car();
}
}
abstract class Machine{
String name;
public abstract void mm();
public Machine(){
System.out.println("我是抽象父类");
}
}
class Car extends Machine{
@Override
public void mm() {
// TODO Auto-generated method stub
}
public Car(){
System.out.println("我是子类");
}
}
抽象类也可以有构造器,
且子类被创建实例的时候,会先把父类加载,
抽象类的构造器是为了给子类使用的 。