继承
继承使用关键字:extends
子类继承超类的同时也就拥有了超类中的所有属性,包括成员和方法等。也就是说:
超类不能访问子类的内部,包括子类的的方法和实例变量。而子类可以访问超类中的方法和实例变量。
接口
接口使用关键字:interface来定义。
接口或是接口的方法的定义中不可能出现void
接口可以简单的说成是一个只定义了抽象方法和类常的类。即只有数据和方法的声明。所以其中的方法不存在接口中定义的静态常是的问题。接口在默认情况下会自动使用abstract和final和static这些关键字。
接口中的方法只提供框架,而不提供方法体,所以隐含的都是抽象的。
接口中的方法隐含的都是public的abstract和non-static的。
在接口中的定义方法时不能使用的关键字有:static final strictfp native synchronized。
接口的所有变量默认都是public,static,final的.所以,接口的变量不能改值,在它的实现类里.这些关键字可以不写,但必须给常量赋初值。
接口的实现类实现的方法必须和接口的方法抛出同样的异常,不许是子类,这和override不一样!同样,如果接口方法没有抛,实现方法也不能抛.
实现类实现的方法必须显式的声明成public,什么都不写都不行。
Runnable接口只有一个run()方法,且不带任何参数。
接口中不可以有构造器。
Interface任何情况下不能用protected和private修饰,,除非嵌套在一个接口或类中
继承使用关键字:extends
子类继承超类的同时也就拥有了超类中的所有属性,包括成员和方法等。也就是说:
超类不能访问子类的内部,包括子类的的方法和实例变量。而子类可以访问超类中的方法和实例变量。
接口
接口使用关键字:interface来定义。
接口或是接口的方法的定义中不可能出现void
接口可以简单的说成是一个只定义了抽象方法和类常的类。即只有数据和方法的声明。所以其中的方法不存在接口中定义的静态常是的问题。接口在默认情况下会自动使用abstract和final和static这些关键字。
接口中的方法只提供框架,而不提供方法体,所以隐含的都是抽象的。
接口中的方法隐含的都是public的abstract和non-static的。
在接口中的定义方法时不能使用的关键字有:static final strictfp native synchronized。
接口的所有变量默认都是public,static,final的.所以,接口的变量不能改值,在它的实现类里.这些关键字可以不写,但必须给常量赋初值。
接口的实现类实现的方法必须和接口的方法抛出同样的异常,不许是子类,这和override不一样!同样,如果接口方法没有抛,实现方法也不能抛.
实现类实现的方法必须显式的声明成public,什么都不写都不行。
Runnable接口只有一个run()方法,且不带任何参数。
接口中不可以有构造器。
Interface任何情况下不能用protected和private修饰,,除非嵌套在一个接口或类中