(一)
package javaprac;
/*
* @interface 关键字
* 1.接口名用public abstract修饰,即使没写也会自动设置此权限。
* 2.接口extends继承父接口,接口是多继承的,extends后面是接口列表
* 3.类通过关键字implements实现接口,一个类可以实现一个或多个接口,这实际上就摆脱了java的单继承局限
* 4.接口中定义的成员变量:系统自动为变量增加public static final修饰符,必须在定义时指定默认值,且成员变量值不可更改
* 5.接口中定义的方法,系统自动为方法增加public abstract修饰,在定义子类时必须实现该方法的具体细节
* 6.类中必须实现接口中的全部方法,否则类为抽象类,重写抽象方法时必须显示标明访问权限为public
* */
interface shape_demo{
double PI = 3.14159; //静态常量,定义时必须赋初值
double area(); //抽象方法,在类中必须定义实现细节,并且显示标明方法权限为public
}
class circle_demo implements shape_demo{
double radius;
circle_demo(double r){
this.radius=r;
}
public double area() { //定义实现接口中的抽象方法,并显示标明方法权限为public
return PI*radius*radius;
}
}
public class interface_demo {
public static void main(String[] args) {
circle_demo c = new circle_demo(10);
System.out.println("圆的面积是:"+c.area());
}
}
(二)
package javaprac;
/*@Interface再议接口
* 1.接口中定义的变量:静态常量,再定义时必须初始化,一旦定义不可更改
* 2.接口中定义的方法:
* a.抽象方法:如果不指定权限,系统会默认为其定义成抽象型(在类中必须重新定义实现细节,且必须显示声明public权限)
* b.类方法:用static关键字声明,必须要有方法体,可通过类名来调用
* c.默认方法:用default关键字声明,必须有方法题,通过对象来调用(在事件处理时会用到)
* */
interface Collection{
String DATA = "Java 1.8接口应用";
int size();
default boolean isEmpty() {
return size() == 0;
}
static String getData() {
return DATA;
}
}
public class interface_extend {
public static void main(String[] args) {
System.out.println(Collection.DATA);
System.out.println(Collection.getData());
}
}
(三)
package javaprac;
/*
* 类可以同时继承接口和父类,接口用implements关键字,父类用extends关键字
* 类是单继承的,接口是多继承的
* 在继承父类的普通方法时,需要注意:子类对于父类方法重载后的权限一定不能小于父类的权限
* */
interface Runner{
void run();
}
interface Swimmer{
void swim();
}
abstract class Animal {
abstract public void eat();
}
class Dog extends Animal implements Runner,Swimmer{
String color;
Dog(String color){
this.color=color;
}
public void run() {
System.out.println(color+"dog is running");
}
public void swim() {
System.out.println(color+"dog is swimming");
}
public void eat() {
System.out.println(color+"dog is eating");
}
}
public class interfaceAndAbs {
public static void main(String[] args) {
Dog dog = new Dog("white");
dog.run();
dog.swim();
dog.eat();
}
}