JavaSE-抽象类

抽象类

1、抽象类和抽象方法简述

1、抽象类和抽象方法语法

抽象类和抽象方法必须要用abstract修饰符修饰
例如:

抽象类:
public abstract class Person {
	//代码
}
抽象方法:
public abstract void print();
1、抽象类和抽象方法关系

抽象类不一定有抽象方法,但是有抽象方法的要么是抽象类,要么是接口。说明:一个类中如果有抽象方法、那么这个类一定要声明为抽象类。

2、实例化问题

抽象类可以有自己的构造方法,但是不能直接通过new进行实例化但不能说是抽象类就无法实例化。
抽象类其实是可以实例化的,但是它的实例化是通过父类的引用来指向子类的实例,来间接地实现父类的实例化(因为子类要实例化前,一定会先实例化他的父类。这样创建了继承抽象类的子类的对象,也就把其父类(抽象类)给实例化了)。

3、子类

两种情况:要么子类本身就是一个抽象类、要么子类重写了抽象类中的所有抽象方法。

4、成员特点

①成员变量:抽象类中既可以是变量也可以是常量,但是abstract不能修饰成员变量。②构造方法:既可以有无参构造方法,也可以有有参构造方法;作用:用于子类访问父类数据的初始化。举例如下:

public abstract class Person {
private String name;
// 代码
public Person() {
	super();
}

public Person(String name) {
	super();
	this.name = name;
}

public abstract void print();
}

③:成员方法:既可以是抽象方法,也可以是非抽象方法。

问题

1、abstract不能和哪些关键字共存?
1)abstract 和 static 不能共存:
被abstratc修饰的抽象方法是没有方法体的;而被static修饰的方法是可以用类名直接去调用的,用类名调用抽象方法是没有意义的。
2)abstract 和 final 不能共存:
被abstract修饰的方法是强制子类重写的;而被final修饰的方法是不能被子类重写的,自相矛盾;
3)abstract 和 private
被abstract修饰的方法是强制子类重写的;而被private修饰的方法是不能被子类重写的,自相矛盾

猜你喜欢

转载自blog.csdn.net/qq_29362113/article/details/84402190