目录
抽象类
定义:抽象类是普通类的超集,只是比普通类多了一些抽象方法而已
抽象方法:
定义:使用abstract关键字定义的只有方法声明没有方法体的方法
public abstract void test();
本地方法
使用native关键字定义的只有方法声明没有方法体的方法//java调用C同名方法
public native int hashCode();
- 注意:
抽象类中包含抽象方法,则抽象类也必须使用abstract来定义表示抽象类
abstract class Perosn{
private String name;
private int age;
public void Setname(String name){
this.name=name;
}
//只声明而未实现的方法
public abstract void getPersonInfo();}
public class Test{
public static void main(String[] args) {
}
}
有关抽象类的使用限制!!
- 所有抽象类必须有子类
final与abstract关键字不能同时出现
- 抽象类的子类必须覆写所有抽象方法
或者子类也使用abstract定义
private与abstract不能同时出现,抽象方法必须被覆写而private方法无法被覆写
- 抽象类无法产生实例化对象,但可以通过子类向上转型进行实例化---------子类依然遵循对象实例化流程,先调用父类(抽象类)构造方法,然后再调用子类构造。
//向上转型
父类 父类引用=new 子类实例();
Person per=new Student();
abstract class Perosn{
public Person(){
this.print();
}
//只声明而未实现的方法
public abstract void print();
}
class Student extends Perosn{
private int num=100;
public Student(int num){
//super();
this.name=name;
}
public void print(){
System.out.println(num);
}}
public class Test{
public static void main(String[] args) {
new Student(30);
}
}
// 输出结果:0
开辟新空间,所有属性有默认值
若主函数中赋值语句改为new Student(30).print();//输出结果为30