抽象类

抽象类/方法

  • 用abstract修饰的类或方法
  • 用extends单继承
  • 抽象类中可以有抽象方法和普通方法。
  • 抽象方法必须在抽象类中
  • 不能new这个抽象类,只能靠子类去继承实现:约束!

示例:

abstract class A{//定义一个抽象类
	
	public void fun(){//普通方法
		System.out.println("存在方法体的方法");
	}
	
	public abstract void print();//抽象方法,没有方法体,有abstract关键字做修饰
	
}

使用原则

抽象类的使用原则如下:
(1)抽象方法必须为public或者protected(因为如果为private,则对子类不可见,子类便无法实现该方法)。
(2)抽象类不能直接实例化,需要依靠子类采用向上转型的方式处理(要获取抽象类的对象必须先用子类继承抽象类,然后实例化子类);
(3)抽象类必须有子类,使用extends继承,且为单继承;
(4)子类(如果不是抽象类)则必须覆写抽象类之中的全部抽象方法(如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类,然后在子子类中实现。);

思考

1. 抽象类有构造方法吗?

有。抽象类里会存在一些属性,那么抽象类中一定存在构造方法,其存在目的是为了属性的初始化。
并且子类对象实例化的时候,依然满足先执行父类构造,再执行子类构造的顺序。

2. 抽象类可以用final声明么?

不能,因为抽象类必须有子类,而final定义的类不能有子类;

3. 抽象类能否使用static声明?

外部抽象类不允许使用static声明,而内部的抽象类运行使用static声明。使用static声明的内部抽象类相当于一个外部抽象类,继承的时候使用“外部类.内部类”的形式表示类名称。

存在的意义?

把子类共有的特性抽象出来,提高可扩展性,从而提高开发效率

posted @ 2023-03-27 20:11  流浪猫老大  阅读(101)  评论(0)    收藏  举报