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盘停止工作
打印机开始工作
工作中
打印机开始工作