抽象类的定义及方法的重写

抽象类的定义及方法的重写

抽象类关键词abstract

  1. 首先定义一个抽象类(Phone)
public abstract class Phone{//定义一个抽象类
	//思考:1>应用场景  2>如何定义
	//抽象类可以看作是一个不具体的类(通俗一点讲就是:无法详细描述的类(事物),只能描述个大概)
	//例如:人类、动物、水果等,或者常见的有:英雄、商品,它们的共同特征就是有多个种类。
	//结合上面所说的,这里举一个‘手机’类的例子:

	//手机品牌名称  例如:苹果、华为、小米、vivo、OPPO、红魔、绿魔等
	String brand;
	//手机名称
	String name;
	//手机价格
	int price;
	 
	//上面这些属性(变量)是手机都共有的属性(变量)
	//再写一些共有的方法

	//手机通话的呼叫功能
	public abstract void call();
	//手机短信的发送功能
	public abstract void send();

	//测试方法
	public void overrideMethod() {
		System.out.println("--Phone method--");
	}

	//备注:因为类是抽象的,所以抽象类中的方法‘可以’不用具体实现功能。
	//疑问1:抽象类只能有抽象方法吗?  
	//答:不是的,可以有普通方法、静态方法以及构造方法,但是没必要,因为具体的功能都将由子类
	//    继承后去实现,抽象类从某种角度上来讲只是提供了一定的‘规则’来约束它的子类。
}
  1. 然后定义一个普通类去继承抽象类(Nokia)

继承关键词extends

public class Nokia extends Phone{
	//继承的特性:
	//子类可以继承父类所有公共的(public)和受保护的(protected)属性及方法
	//与普通的继承不同的是父类属于抽象类,因此还需要实现父类中所有的抽象方法:

	public Nokia(){
		brand = "诺基亚(Nokia)";
		name = "诺基亚 NOKIA 105 新 黑色 老人老年手机";
		price = 149;
	}

	@Override  //备注:带@的都属于注解,Override则意为重写
	public void call(){
		System.out.println("这是"+brand+"的通话呼叫功能");
	}
	
	@Override
	public void send(){
		System.out.println("这是"+brand+"的发送短信功能");
	}
	
	//当前类定义的获取信息的方法(普通方法)
	public void getInformation(){
		System.out.println("brand="+brand+",name="+name+",price="+price);
	}
	
	//测试方法
	public void overrideMethod() {
		System.out.println("--Nokia method--");
	}
}

在这里插入图片描述

抽象类的继承:抽象类子类要调用父类的方法,必须要实现(重写)其功能才能调用
即便没有@Override注释,但如果子类中自定义的方法和父类中自定义的方法相同,那么也能达到一个重写的效果

疑问:抽象方法不能与哪些关键词共存?为什么?

1.static
从需求上分析,将抽象方法设置成静态的没有实际意义,因为抽象方法没有具体的实现功能。
2.private
首先,定义抽象方法是为了由子类去实现其具体功能的,其次子类无法使用父类中私有化的方法,由此不难看出两者相互冲突
3.final
有final修饰的方法都属于最终方法,和上面一样,因为没有具体功能所以不能算是最终方法,而且有final修饰的方法可以被继承但无法重写,这两点都与抽象方法相违

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值