1.接口不能实例化,和抽象类一样,只能通过实现类实例化。
package com.class_decoration;
public class test {
public static void main(String[] args) {
// Animal animal=new Animal();会报错,不能直接实例化接口
// 但是可以通过实例化的实现类对象的方式,实例化该接口的实现类,进而去使用接口中的属性
Animal dog=new Dog();
System.out.println(dog.a);
}
}
实现类对象
package com.class_decoration;
public class Dog implements Animal{
@Override
public void eat() {
System.out.println("dog吃骨头");
}
}
接口
package com.class_decoration;
public interface Animal {
public int a=100;
public final int b=200;
public abstract void eat();
}
2.接口的实现类
要么重写接口中所有的抽象方法,要么声明为抽象类
3.接口中的属性
自动添加static final修饰符
package com.class_decoration;
public class test {
public static void main(String[] args) {//因为接口中的属性自动被 static修饰,所以可以不实例化该接口,直接访问接口中的属性
System.out.println(Animal.a);
}
}
4.接口中没有构造方法。
5.接口中不可以写方法的实现,在接口中即使没写关键词修饰符,自动的添加public abstract修饰符 自己写别的,比如 protected private 会报错
6.抽象类和接口区别
抽象类主要是对事物(有属性有方法)的抽象,接口主要是行为(方法)的抽象