java中的接口
接口表示一个类额外功能的实现,其作用是为了降低耦合。
接口的使用注意事项
1. 接口中只能存在抽象方法, jvm默认会在方法前使用public abstract进行修饰, 刚学java推荐加上
2. 类和接口是实现关系 可以通过关键字implements实现接口
3.当一个具体的类实现一个接口的时候,必须要实现接口的所有抽象方法
interface QiChe{
public abstract void qiche(); //接口中只能有抽象方法
}
abstract class Animal3{ //编写一个动物父类
public abstract void eat(); //含有抽象方法
}
class Bear extends Animal3{ //熊类继承Animal3类的时候要重写其抽象类的抽象方法
@Override
public void eat(){
System.out.println("🐻吃🥩");
}
}
class QicheBear extends Animal3 implements QiChe{ //实现接口的时候也要重写其接口中的抽象方法
public void eat(){
System.out.println("熊吃肉");
}
public void qiche(){
System.out.println("熊会骑车");
}
}
public class InterfaceDemo1 {
public static void main(String[] args) {
QicheBear q1 = new QicheBear();
q1.eat();
q1.qiche();
}
}
interface Inter{
void fun1();
void fun2();
}
interface Inter2 {
void fun3();
}
interface Inter3 extends Inter,Inter2{
//fun1();
//fun2();
//fun3();
void fun4();
}
class Demo5 implements Inter,Inter2{
@Override
public void fun1() {
}
@Override
public void fun2() {
}
@Override
public void fun3() {
}
}
abstract class Demo4 implements Inter{
}
class Demo1Impl implements Inter{
@Override
public void fun1() {
}
@Override
public void fun2() {
}
}
public class InterfaceDemo2 {
public static void main(String[] args) {
}
}
4.若一个抽象类实现一个接口的时候,可以选择性地实现接口中的抽象方法
例如上面代码的
abstract class Demo4 implements Inter{
}
5.一个类可以同时实现多个接口,使用逗号隔开,但是要注意如果这个类不是抽象类,需要重写这里面的所有抽象方法
class Demo5 implements Inter,Inter2{
@Override
public void fun1() {
}
@Override
public void fun2() {
}
@Override
public void fun3() {
}
}
6.接口和接口存在继承关系,并且一个接口可以同时继承多个接口
interface Inter3 extends Inter,Inter2{
//fun1();
//fun2();
//fun3();
void fun4();
}
java中允许多继承吗?
1.如果是类与类之间的继承,只能进行单继承,不能多继承
2.如果是接口与接口之间的继承,可以进多继承,也可以进行单继承
7.接口中只能定义常量,默认修饰符为public static final
interface Inter1{
public static final int a = 10;
// Inter1(){}
}
class Demo6 implements Inter1{
public void fun1(){
// a = 20;
System.out.println(a);
}
}
public class InterfaceDemo3 {
public static void main(String[] args) {
// Demo6 demo6 = new Demo6();
// System.out.println(demo6.a);
// System.out.println(Inter1.a);
// demo6.fun1();
// Inter1 inter1 = new Inter1();
Inter1 i1 = new Demo6(); // 接口多态
}
}
接口无法进行实例化,没有构造方法,因为接口和类之间是属于实现关系,接口也不能创建对象,因为其中都没有构造方法
`// Inter1(){}
// Inter1 inter1 = new Inter1();
`

浙公网安备 33010602011771号