一、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();
}