类
类是对具体事物的抽象,例如对dog,cat的抽象也就是animal
dog,cat共有的特性提取出来,放到更通用,更抽象的类animal中
通俗说就是说”是什么“,dog和cat都是animal.
1. 抽象类:不能被实例化,必须通过其他类继承使用。抽象类的所有方法都要在子类中实现,拥有抽象方法的类必须声明为抽象类,抽象类也可以有非抽象方法。
public abstract class Animal{
public void eat();
}
- 具体类:可以被实例化
public class Animal{
private age;
public void eat(){
System.out.println("eat meat!");
}
}
接口
接口是一开始就有的,根据特定的事物具体实现,是对方法的抽象。先规定有什么,再根据不同的事物具体去实现。可以实现多重继承
public interface Run{
public void run();
}
使用类和接口
public class Dog extends Animal implements Run{
@Override
public void run(){
System.out.println("I can Run!");
}
}
引用别人的话
1、抽象类里面可以有非抽象方法
但接口里只能有抽象方法
声明方法的存在而不去实现它的类被叫做抽像类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽像类,并让它指向具体子类的一个实例。不能有抽像构造函数或抽像静态方法。Abstract 类的子类为它们父类中的所有抽像方法提供实现,否则它们也是抽像类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
2、接口(interface)是抽像类的变体。在接口中,所有方法都是抽像的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽像的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对像上调用接口的方法。由于有抽像类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。