Java语法之抽象类&接口

Java语法之抽象类&接口

一、抽象类

1、基本概念

抽象方法:没有方法体的方法,比如多态的示例中,"动物"实际上是一个抽象的概念。

抽象类:如果类中有抽象方法,该类必须定义为抽象类。

public abstract class  Animals {  //抽象类
    public abstract void eat();   //抽象方法
}

(抽象类不是具体的,因此抽象类不能用创建普通类的方法去创建对象。)

2、抽象类的特点

1、抽象类和抽象方法必须要用abstract关键字来修饰。

2、如果一个类里有抽象方法,那么这个类一定是抽象类;但是抽象类里面可以没有抽象方法。

3、抽象类需要参照多态的形式来创建对象。

4、抽象类的子类要么重写抽象类的所有抽象方法,要么子类本身就是抽象类。

public abstract class  Animals {    //抽象类
    public abstract void eat();
    public  void sleep(){           //抽象类里可以有非抽象方法
        System.out.println("睡觉");
    }
}

public class Cat extends Animals{
   public void eat(){
       System.out.println("猫吃鱼");
   }
}

public class AnimalsDemo {
    public static void main(String[] args) {
        Animals a=new Cat();//抽象类用多态的方式创建对象
        a.eat();
        a.sleep();
    }
}

3、抽象类的成员特点

抽象类中的成员变量:可以是变量,也可以是常量。

抽象类中的构造方法:有构造方法,但是不能实例化,构造方法主要用于子类访问父类数据的初始化。

抽象类中的成员方法:可以有抽象方法(限定子类必须完成某些动作),也可以有抽象方法(提高代码的复用性)。

二、接口

1、接口的特点

1、用interface修饰。

image-20240123144817106

2、类和接口之间不是继承关系,不能用extends关键字,继承关系是类与类之间的,类与接口之间要用implements关键字,类实现了接口。

image-20240123151156366

image-20240123150952260

3、接口也属于抽象的,不能实例化,要用多态的方式去创建对象。

public interface Jumpping {                  //定义一个接口
    public abstract void jump();
}

public class Cat implements Jumpping{        //类实现接口
    public void jump() {
        System.out.println("猫可以跳高了");
    }
}

public class JumppingDemo {
    public static void main(String[] args) {
        Jumpping j=new Cat();                //接口是抽象的,不能实例化,要用多态的方式去创建对象
        j.jump();
    }
}

4、接口的实现类要么重写接口中的所有抽象方法,要么是抽象类。

2、接口的成员特点

接口中的成员变量:只能是常量,即:默认用final static修饰。

public interface Inter{
	public int num=10;
	//等价于public static final int num=10
}

接口中的构造方法:没有构造方法,因为接口主要是对行为进行抽象,没有具体存在。(一个类如果没有父类,默认继承自Object类。

抽象类中的成员方法:只能有抽象方法。

3、接口与类的关系

(1)类和类的关系

继承关系,只能单继承,但是可以多层继承。(只能有一个父亲,但是父亲可以有父亲)

(2)类和接口的关系

实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口。

public class InterImpl extends  Object implements Inter1,Inter2,Inter3{
}

(3)接口和接口的关系

继承关系,可以单继承,也可以多继承。

public interface Inter3 extends Inter1,Inter2{
}
posted @ 2024-01-25 17:10  6小1  阅读(3)  评论(0编辑  收藏  举报