abstract抽象类

使用abstract修饰的方法没有方法体,只有声明。
定义是一种“规范”,就是告诉子类必须要给抽象方法提供具体的实现
含有抽象方法的类一定为 抽象类

public abstract class Test1 {
	 abstract public void sayHello(); //只有声明没有方法体
 
	 public void commonMethod() {
	 System.out.println("在抽象类中也可以定义普通方法");
	 }
}

先从一个例子中提出抽象类的使用要点

关于抽象方法主要有两点:第一:没有实现 第二:子类必须实现

public abstract class Pet {
	public abstract void eat();
	public abstract String sleep();
	public void run() {
		System.out.println("Pet.run()");
	}

	public static void main(String[] args) {
	//Pet p1 = new Pet(); 		**//抽象类不能被实例化**
		Pet p2 = new Dogs();
		p2.eat();  //Dogs.eat()
	}
}
class Dogs extends Pet{

	@Override
	public void eat() {			//子类必须实现父类的抽象方法 否则报错
		System.out.println("Dogs.eat()");
	}
	@Override
	public String sleep() {    //返回值类型也必须保持一致
		return "Dogs.sleep()";
	}
}

抽象类的作用:
通过抽象类可以严格的定义子类的规范
抽象类的意义就是给子类提供统一的设计模板 让子类去实现

抽象类的使用要点
1.有抽象方法的类一定是抽象类
2.抽象类不可被实例化 即不可被new
3.子类必须实现父类的抽象方法 否则报错。
重写抽象方法的规则 与 继承重写父类方法的规则相同
1.方法名,形参列表必须相同
2.返回值类型和声明异常类型,子类必须小于等于父类
3.访问权限,子类大于等于父类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

抽象类的继承关系

1.当一个普通类继承了一个抽象类,并重写了抽象方法后,这个普通类再被继承的时候,其子类不需要重写父类所重写的抽象方法,因为子类的父类是个普通类。
在这里插入图片描述
例如这个例子CanFly继承抽象类 但是CanFly是个普通类,当子类Bird继承普通父类CanFly 不需要再重写eat()方法。

2.继承抽象父类的类也可以是一个抽象类,重写父类抽象方法的方法也可以是一个抽象方法。
当一个重写父类的抽象方法的方法仍然是一个抽象方法的时候,这个类再被继承时,就必须重写此方法,因为他的父类也是一个抽象类。

在这里插入图片描述
在这里插入图片描述
例如这个例子,重写Animal类抽象方法eat()的方法可以仍然是一个抽象方法,所对应的CanFly类也就是一个抽象类,当这个CanFly类再被继承时,其子类必须重写eat()方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值