定义:
1.抽象类就是不能创建对象的类
2.抽象方法就是没有方法体的方法。
//使用abstract关键字修饰一个类,这个类就是抽象类
public abstract class Shape{
}
//抽象方法,就是没有方法体的方法
public abstract void test();
3.继承抽象类的子类必须重写抽象类中的抽象方法。
4.抽象方法只能存在于抽象类中,为什么?
因为抽象方法没有方法体,如果创建该类的对象调用该对象方法则没有代码可以执行。
5.抽象方法存在的意义是为了再多态的情况下,调用方法不出错,而能够通过编译。
多态在子父类中的成员上的体现的特点:
1,成员变量:在多态中,子父类成员变量同名。
在编译时期:参考的是引用型变量所属的类中是否有调用的成员。(编译时不产生对象,只检查语法错误)
运行时期:也是参考引用型变量所属的类中是否有调用的成员。
简单一句话:无论编译和运行,成员变量参考的都是引用变量所属的类中的成员变量。
再说的更容易记忆一些:成员变量 — 编译运行都看 = 左边。
2,成员函数。
编译时期:参考引用型变量所属的类中是否有调用的方法。
运行事情:参考的是对象所属的类中是否有调用的方法。
为什么是这样的呢?因为在子父类中,对于一模一样的成员函数,有一个特性:覆盖。
简单一句:成员函数,编译看引用型变量所属的类,运行看对象所属的类。
更简单:成员函数 — 编译看 = 左边,运行看 = 右边。
3,静态函数。
编译时期:参考的是引用型变量所属的类中是否有调用的成员。
运行时期:也是参考引用型变量所属的类中是否有调用的成员。
为什么是这样的呢?因为静态方法,其实不所属于对象,而是所属于该方法所在的类。