抽象:抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征的过程。(共性的抽取,找出相同的特征)
比如一个Animal抽象类,他的抽象是所有的动物都可以吃东西,因此就可以在Animal抽象类中定义一个抽象方法 public abstract void eat();
具体的怎么吃的方法体由它的子类实现,比如一个Cat类继承了Animal抽象类,那么就要实现eat这个方法,就在方法体写上猫吃鱼;
抽象类的规则还是和普通类的规则差不多的。都有构造方法,成员变量,也有普通的方法,但不能有具体的实现类,就比如Animal就不能具体的去实现,
要想创建Animal类的对象,就可以用多态的方式,Animal animal=new Cat();
注意事项:子类必须覆盖父类的所有的抽象方法,如果不实现也可以,那么这个类也一定是抽象类,有抽象方法的一定是抽象类,是抽象类不一定有抽象方法
接口:(就相当于小型的抽象类,但他是百分之一百的抽象为什么呢?)接口是解决Java无法使用多继承的一种手段,但是接口在实际中更多的作用是制定标准的。
必须记住:抽象方法只能存在于抽象类或者接口中,但抽象类中却能存在非抽象方法,即有方法体的方法。接口是百分之百的抽象类
Java接口是一系列方法的声明,是一些方法特征的集合
个人觉得,它的范围比抽象类还小,(为什么呢?)
还是那个Animal抽象类,有的动物可以飞,有的动物则不能,这时候就不能在Animal抽象类中定义一个抽象的飞这个方法,怎么办呢?这时候可以定义一个飞的接口类,
飞的接口类定义一个飞的方法void fly();由于接口时百分比的抽象类,默认是public abstract 修饰的,(这时候就可以解释为什么它的范围比抽象类还小,Animal和飞相比)
语法规则很不一样,它的变量是默认有public static 修饰的,没有有方法体的方法。