Java关键字abstract的笔记

/*
 * 抽象类的特点:
 * 1. 抽象类和抽象方法都需要被abstract修饰,抽象方法一定要定义在抽象类中。
 * 2. 抽象类不可以创建实例
 * 3. 子类只有覆盖了抽象类中所有的抽象方法后,才能实例化,否则该子类还是一个抽象类
 * 
 * 【细节问题】
 * 1. 抽象类是否有构造函数?
 * 答:有,虽然自己不能创建对象,但是可以给自己的子类对象初始化。
 * 
 * 2. 抽象类和普通类的不同点?
 * 答:①抽象描述事物不具体,②抽象类不可以创建对象,③抽象类可以定义抽象函数
 * 
 * 3. 抽象关键字abstract不可以和哪些关键字共存?
 * 答:①final:因为抽象类可以有子类,抽象方法、属性可以被覆盖,而final修饰的不可以
 * 	  ②private:抽象类成员可以被子类覆盖,私有化就不能覆盖了
 * 	  ③static:类名即可调用静态的成员,对于抽象类来说没意义
 * */
abstract class Cats{  //猫科类 
	int legNum;
	String color;
	
	public Cats(int legNum,String color){
		this.legNum = legNum;
		this.color = color;
	}
	abstract void eat();  //猫科都有吃的行为
}

class PetCat extends Cats{
	public PetCat(int legNum,String color){
		super(legNum,color);  //使用抽象父类的构造函数
	}
	void show(){
		System.out.println("腿有"+this.legNum+",毛色是"+this.color);
	}
	void eat(){  //覆盖抽象父类的抽象方法
		System.out.println("宠物猫吃猫粮");
	}
}

class Tiger extends Cats{
	public Tiger(int legNum,String color){
		super(legNum,color);
	}
	void eat(){
		System.out.println("老虎吃肉");
	}
}

public class abstractDemo {
	public static void main(String[] args){
		PetCat xiaohuang = new PetCat(4,"yellow");
		xiaohuang.show();
		xiaohuang.eat();
		
		/*输出结果*/
		//腿有4,毛色是yellow
		//腿有4,毛色是yellow
	}
}

转载于:https://my.oschina.net/daladida/blog/917681

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值