Java--抽象类与接口--第十一天

Java–抽象类与接口–第十一天

每日关键字:

关键字:

final

修饰范围:

​ final 用于声明属性,方法和类

​ 属性:定义就必须直接赋值或者在构造方法中进行赋值,并且之后都不能修改。

​ 方法:在子类中不可被重写。

​ 类:不能被定义为抽象类或是接口,也不可被继承。

interface

​ 作用:用来声明一个接口。

implements

​ 作用:用来实现接口。

抽象类:

​ **概念:**一个没有足够的信息来描述一个具体的对象的类

(也就是类含有未实现功能的方法)

修饰关键字:abstract

例如:public abstract class test{};

抽象类的规定:

​ 1.抽象类不能被实例化(不能主动创建对象),只有通过继承了抽象类的非抽象子类可以创建对象。

​ 2.抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。

​ 3.抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。

​ 4.构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。

​ 5.抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。

抽象方法:

​ 被abstract修饰的方法,抽象方法没有定义,方法名后面直接跟一个分号,而不是花括号。

声明抽象方法会造成以下两个结果:

  • 如果一个类包含抽象方法,那么该类必须是抽象类。
  • 任何子类必须重写父类的抽象方法,或者声明自身为抽象类。

示例1:

对构造方法,成员方法,抽象方法,静态方法进行比较

public abstract class Animal {

    int num;//成员变量

    //构造方法
   public  Animal(){

   }
   
   //成员方法
   public void sleep(){

   }
   
    //抽象方法
    public abstract void eat();

	//静态方法
    public  static void drink(){

    }

}

创建一个子类继承并实现抽象类:

public  class Cat extends Animal{

	//重写抽象类Animal中的抽象方法eat()
    @Override
    public void eat() {
		System.Out.println("吃吃吃")
    }
    //其他方法可以根据自己需求进行重写

}

接口:

​ 可以将接口看作是一个特殊的抽象类,是抽象方法的集合。

​ 但接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。

​ 类描述对象的属性和方法;接口则主要包含类要实现的方法。

接口特性:

​ 1.接口不可以被实例化;

​ 2.实现类必须重写接口的所有方法;

​ 3.实现类可以实现多个接口;

​ 4.接口中的变量都是静态常量;

接口与类的区别:

​ 1.接口不能用于实例化对象;

​ 2.接口没有构造方法;

​ 3.接口中所有的方法必须是抽象方法,(JDK 1.8 以后,接口里可以有静态方法和方法体了。);

​ 4.接口不能包含成员变量,除了 static 和 final 变量;

​ 5.接口不是被类继承了,而是要被类实现;

​ 6.接口支持多继承,接口可以继承接口,且可以继承多个接口。

接口的定义:

使用 interface 关键字用来声明一个接口。

[访问修饰符]  interface  接口名称  [extends 其他的接口名1,….其他的接口名n] { 	
        // 声明常量
       // 抽象方法
 }

接口的使用:

类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。

[访问修饰符] class 类名 implements 接口名1,接口名2……{ }

结合继承:

[访问修饰符] class 类名 extends 父类名 implements 接口名1,接口名2……{ }

示例2:

/*
	接口的声明
*/

public interface Animal {

	//属性只能是被static或final修饰
    public static final int age = 1;
    final String sex = "雄性";

    //抽象方法
    public void eat();

    //jdk8后新加语法
    public default void sleep(){
		System.Out.printfln("睡觉zzz");
    }

    public static void test(){
		System.Out.printfln("吃吃吃");
    }
}
/*
    实现接口
*/

public class Dog implements Animal {
	
	//必须重写Animal中的抽象方法
    @Override
    public void eat() {
        System.out.println("吃骨头");
    }

}

抽象类和接口的区别

​ 1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。

​ 2.抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static 或 final 类型的。

​ 3.接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。

​ 4.一个类只能继承一个抽象类,而一个类却可以实现多个接口。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页