Java final关键字、抽象类、接口
final关键字在Java中被称为完结器,表示最终的意思:
final能声明类、方法、属性:
1、使用final声明的类不能被继承;
2、使用final声明的方法不能被重写;
3、使用final声明的变量变成常量,不可以被修改。(常规大写)
抽象类概念:
包含一个抽象方法的类就是抽象类;
抽象方法:
声明而未被实现的方法,抽象方法必须使用abstract关键字声明
抽象类被子类继承,子类(如果不是抽象类)必须重写抽象类中的所有抽象方法
定义格式:
abstract class className{
属性;
方法;
抽象方法;
}
抽象类不能直接实例化,要通过其子类进行实例化。
package com.jike.finalDemo; abstract class Abs{ private int age; public void setAge(int age) { this.age = age; } public int getAge() { return age; } public void tell() { } public abstract void say(); } class AbsDemo extends Abs{ public void say() { System.out.println(getAge()); } } public class abstractDemo { public static void main(String[] args) { AbsDemo absDemo=new AbsDemo(); absDemo.setAge(50); absDemo.say(); } }
输出:
50
接口是Java中最重要的概念,接口可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法组成。
接口的格式:
interface interfaceName{
全局常量
抽象方法
}
接口的实现也必须通过子类,使用关键字implements,而接口是可以多实现的;
一个子类可以同时继承抽象类和实现接口;
一个接口不能继承一个抽象类,但是可以通过extends关键字同时继承多个接口,实现接口的多继承。
package com.jike.finalDemo; interface Inter{ public static final int AGE=50; //全局常量,大写 public abstract void tell(); //抽象方法 } interface Inter2{ public abstract void say(); } abstract class Abs1{ public abstract void print(); } class A extends Abs1 implements Inter,Inter2{ //接口的实现也必须通过子类,使用关键字implements,而接口是可以多实现的;一个子类可以同时继承抽象类和实现接口; public void tell() { System.out.println("A的tell方法"); } public void say() { System.out.println("say something"); } public void print() { System.out.println("print something"); } } interface Inter3 extends Inter,Inter2{ //接口可以继承多个接口,类不能多继承 } public class interfaceDemo { public static void main(String[] args) { // Inter i=new Inter(); //接口不能直接实例化 A a=new A(); a.tell(); System.out.println(Inter.AGE); a.say(); a.print(); } }
输出:
A的tell方法 50 say something print something
接口的应用:
package com.jike.duotai; interface USB{ void start(); void stop(); } class C{ public static void work(USB u) { u.start(); System.out.println("工作中"); u.stop(); } } class USBDisk implements USB{ public void start() { System.out.println("U盘开始工作"); } public void stop() { System.out.println("U盘停止工作"); } } class Printer implements USB{ @Override public void start() { System.out.println("打印机开始工作"); } @Override public void stop() { System.out.println("打印机开始工作"); } } public class interDemo { public static void main(String[] args) { C.work(new USBDisk()); C.work(new Printer()); } }
输出:
U盘开始工作 工作中 U盘停止工作 打印机开始工作 工作中 打印机开始工作