package java_test;/*abstract:是一个修饰符,可以修饰方法,类1.当我们多个类存在相同的功能,但是功能的主体(方法体)不同,这是我们进行向上抽取只抽取功能的定义不抽取功能的主体抽象类的特点:1.抽象方法一定要在抽象类中2.抽象类和抽象方法必须要被abstract关键词修饰3.抽象的类是不能被创建对象的,因为调用抽象的方法没有意义4.要使用抽象类中的方法,要继承抽象类,并且重写抽象方法,然后创建子类对象来调用5.抽象类中可以定义非抽象的方法,有时我们需要此类不能被new关键字创建对象时,可以用abscract将此类变成抽象类6.子类如果只重写父类一部分抽象方法,那么该子类也成为了一个抽象类,如果抽象类的抽象方法要被使用,子类必须重写所有抽象方法值得注意:抽象类和普通类没有太大的不同1.抽象类无法通过new关键字创建对象2.抽象类里面可以有非抽象的方法 *//* 抽象类中抽象方法可有可无,但通常都含有抽象方法(这是定义抽象类的目的所在)让子类继承; 如果子类没有把抽象类中所有的抽象方法都重写,则这个继承了抽象类的子类也会成为抽象类; 如果子类把抽象类中所有的抽象方法都重写,则这个子类就可以实例化了。 */abstract class Animals{//抽象类 可以有对象,只是不能通过 new来创建对象 abstract void sing();//抽象方法 只抽取方法名称,不抽取方法主体 abstract void show();}class Cats extends Animals{ void sing(){ System.out.println("喵喵的唱歌"); } void show(){ }}class Dog {//这里dog类没有继承Animals类,如果继承了抽象类Animals,还需要重写抽象方法,Cats类重写了Animals类的所有抽象方法 void sing(){ System.out.println("汪汪的唱歌"); }}public class DM001 { public static void main(String[] args) { }}