final关键字、抽象类与抽象方法、接口

一、final关键字:

如果变量用static final修饰,全局常量。

 

二、抽象类与抽象方法:abstract:抽象的,可以修饰类、方法。

1、abstract修饰类:抽象类

      (1)、不可被实力化,就意味着它不能够创建对象;(2)、抽象类有构造器(凡是类都有构造器);(3)、抽象方法所在的类一定是抽象类。反之,抽象类中可以没有抽象方法。

当我们设计一个类时,不需要创建此类的实例的时候,就可以考虑将其设置为抽象的,由其子类实现这个类的抽象方法。

抽象方法没有方法体,由其子类实现。

2、abstract修饰方法:抽象方法

      (1)、格式:没有方法体,也没有{ }。如:public abstract void eat();

(2)、抽象方法只保留方法的功能,而具体的执行,交给继承抽象类的子类,由子类重写此抽象方法;(3)、若子类继承抽象类,并重写了所有的抽象方法,则此类是一个”实体类”,即可以实例化;(4)、若子类继承抽象类,没有重写所有的抽象方法,意味着此类中仍有抽象方法,则此类必须声明为抽象的。

 

3、抽象方法的使用练习:

package com.atguigu.abstract00;

//一般员工

class CommonEmployee extends Employee{

    public void work() {

        System.out.println("在流水线工作");

    }

}

//管理者

class Manager extends Employee{

    private double bonus;

    public double getBonus() {

        return bonus;

    }
    public void setBonus(double bonus) {

        this.bonus = bonus;

    }



    public void work() {

        System.out.println("监督员工的工作,提高效率。");

    }

}

abstract class Employee{

    private String name;

    private int id;

    private double salary;

    public abstract void work();

   

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public int getId() {

        return id;

    }

    public void setId(int id) {
        this.id = id;
    }

    public double getSalary() {

        return salary;

    }

    public void setSalary(double salary) {

        this.salary = salary;

    }
}

public class TestEmployee {

    public static void main(String[] args) {

//      Manager m=new Manager();

        Employee e=new Manager();

        e.work();

       

        Employee e1=new CommonEmployee();

        e1.work();

    }

}

4、抽象类与抽象方法的使用:

 子类不能重写声明为private的方法。

三、接口的实现:

接口是定义的一种功能;interface关键字表明是一个接口,定义的是一个功能。这些功能也可以被类使用,表明的是此接口与这些类发生的关系。

implements表明类实现接口,实现接口以后这些类就能够包含有了接口中的功能。

* 接口(interface)是与类并行的一个概念

 * 1、接口可以看作是一个特殊的抽象类,是常量与抽象方法的一个集合。不能包含变量、一般的方法。

 * 2、接口是没有构造器的。

 * 3、接口定义的就是一种功能。此功能只可以被类所实现(implements)

 * 4、实现接口的类,必须要重写其中所有的抽象方法,方可实例化。若没有重写所有的抽象方法,则此类仍为一个抽象类。

 * 5、类可以实现多个接口,但只可以继承一个父类。

 * 6、接口与接口之间是继承的关系。而且接口之间可以多继承。

package interface00;

/*

 * 接口(interface)是与类并行的一个概念

 * 1、接口可以看作是一个特殊的抽象类,是常量与抽象方法的一个集合。不能包含变量、一般的方法。

 * 2、接口是没有构造器的。

 * 3、接口定义的就是一种功能。此功能只可以被类所实现(implements)

 * 4、实现接口的类,必须要重写其中所有的抽象方法,方可实例化。若没有重写所有的抽象方法,则此类仍为一个抽象类。

 * 5、类可以实现多个接口,但只可以继承一个父类。

 * 6、接口与接口之间是继承的关系。而且接口之间可以多继承。

 * */

public class TestInterface {

    public static void main(String[] args) {

        System.out.println(AA.I);  //输出接口中的常量值

//      AA.I=13;    错误

    }

}

interface AA{

    //常量:所有的常量都是默认public static final修饰,不是像其他一样默认是default修饰。

//  public static final int I=12;

//  public static final boolean FLAG=false;

    int I=12;

    boolean FLAG=false;

//  int i;  不能只声明不赋值

//抽象方法:所有的抽象方法都是默认前缀为:public abstract

//  public abstract void method1();

//  public abstract void method2();

    void method1();

    void method2();

}

 

猜你喜欢

转载自blog.csdn.net/qq_39044046/article/details/94492130