欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java抽象类、抽象方法、final修饰符

程序员文章站 2022-05-22 11:20:15
...

什么是抽象类

  • 使用abstract修饰符修饰的类被称为抽象类

  • 抽象类不能实例化对象,只能被继承。

抽象类和抽象方法都通过abstract关键字来修饰
示例如下:

/**
 * 交通工具的抽象类
 */
public abstract class Traffic {
}

什么是抽象方法

使用abstract修饰符修饰的方法被称为抽象方法

什么时候使用抽象方法?

当多个类有相同的方法,但方法体不一样,这时候就可以抽取出抽象方法。

public abstract class Traffic {
	
	public abstract void run();   //Traffic抽象类中的抽象方法
}

抽象方法不能有方法体,如果子类想要继承父类,那么子类必须重写抽象类中所有的抽象方法。

/**
 * 火车类,继承Traffic
 */
public class Train extends Traffic {
	public void run() {   //重写Traffic抽象类中的抽象方法
		System.out.println("火车在轨道上行驶");
	}
}
/**
 * 飞机类,继承Traffic
 */
public class Plane extends Traffic {
	public void run() {   //重写Traffic抽象类中的抽象方法
		System.out.println("飞机在天上飞");
	}
}

下面编写测试类来一起看下结果,在这里要记住抽象类不可以实例化对象,只能被继承。

/**
 * 测试类
 */
public class TestTraffic {
	public static void main(String[] args) {
		Train train = new Train();
		Plane plane = new Plane();
		train.run();
		plane.run();
	}
}

输出结果:

火车在轨道上行驶
飞机在天上飞

注意事项:

  1. 抽象类中不一定包含抽象方法,但包含抽象方法的类一定是抽象类。
  2. 抽象类可以有抽象方法和非抽象方法。
  3. 抽象类不可以实例化对象。
  4. 有抽象方法的类必须声明为抽象类,子类必须重写所有的抽象法才能实例化,否则子类还是一个抽象类。

问题:

问:抽象类中可以有构造方法吗?

答:抽象类可以有构造方法,其构造方法可以被本类的其他构造方法调用,若此构造方法不是由private修饰,也可以被本类的子类中的构造方法调用。

final修饰符

修饰类

  1. 该类不能被继承

  2. 类中的方法不会被覆盖,因此默认都是final的。

  3. 用途:设计类时,如果该类不需要有子类,不必要被扩展,类的实现细节不允许被改变,那么就设计成final类

修饰方法

  1. 该方法可以被继承,但是不能被覆盖。

  2. 用途:一个类不允许子类覆盖该方法,则用final来修饰

  3. 好处:可以防止继承它的子类修改该方法的意义和实现;更为高效,编译器在遇到调用fianal方法转入内嵌机制,提高了执行效

  4. 注意:父类中的private成员方法不能被子类覆盖,因此,private方法默认是final型的

修饰变量

  1. 用final修饰后变为常量。包括静态变量、实例变量和局部变量这三种。

  2. 特点:可以先声明,不给初值,这种叫做final空白。但是使用前必须被初始化。一旦被赋值,将不能再被改变。

修饰参数

  1. 用final修饰参数时,可以读取该参数,但是不能对其作出修改。

Java抽象类、抽象方法、final修饰符

相关标签: java 抽象类