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

什么是抽象类

  • 使用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修饰参数时,可以读取该参数,但是不能对其作出修改。

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值