package softstudy;
/*抽象类
* 当多个类中出现相同的功能 但功能主体不同
* 这时可以进行向上抽取 这时只抽取功能定义 不抽取功能主体。
* abstract 笼统的 抽象的 看不懂的方法
* abstract方法必须存在abstract类中 你不能创建一个看不懂的类的对象
*
* 就是看不懂
* 抽象类的特点:
* 1,抽象方法一定定义在抽象类中
* 2,抽象方法和抽象类都必须被abstract关键字修饰
* 3,抽象类不可以用new创建对象 因为调用抽象方法没有意义
* 4,抽象类中的抽象方法要想被使用,必须有子类复写起<所有的>抽方法后,建立子类对象调用
* 如果子类只覆盖了部分抽象方法 那么该子类还是一个抽象类
*
*抽象类和一般类没有太大的不同:
* 该如何描述事物就如何描述事物 只不过 该事物出现了看不懂的东西
* 这些不确定的部分也是该事物的功能 需要明确的出现 但是无法定义主体
* 通过抽象方法来表示.
*
*抽象类比一般类多了个抽象函数,就是在类中可以定义抽象方法。
*第二个 抽象类不可以进行实例化
*
*特殊:抽象类中可以不定义抽象方法 这样做仅仅是不让该类建立对象
*
* */
class Chongcistu extends StuStudent{
void study(){};//必须复写study方法;
}
public class AbstractDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//new StuStudent.study(); 实例化没有意义 没有执行体 方法体
new BaseStudent().study();
}
}
class AdvStudent extends StuStudent{
void study(){
System.out.println("study run");
}
}
class BaseStudent extends StuStudent{
void study(){
System.out.println("study run");
}
}
abstract class StuStudent{
abstract void study();
void sleep(){
System.out.println("躺着");
}
}