JAVA之抽象类

JAVA之抽象类
1.抽象类定义
抽象类:用abstra关键字声明的类称为抽象类
很多具有相同特征和行为的对象可以抽象为一个类
很多具有相同特征和行为的类可以抽象为一个抽象类
2.抽象类的使用方法
abstract关键字声明类即为抽象类,而用abstract声明的方法为抽象方法
抽象类可以没有抽象方法,但是有抽象方法的类必须是抽象类
非抽象类继承抽象类必须实现所有抽象方法
抽象类也可以继承抽象类,但可以不实现父类抽象方法
抽象类可以有方法实现和属性
但是抽象方法只能有声明不能有实现和属性
抽象类的继承必须用extends关键字

抽象类的声明
abstract class Animal{
	public abstract void move();//抽象方法的声明,抽象方法只有声明,没有属性
}

抽象类继承抽象类

abstract class Person extends Animal{
	public abstract void eat();//可以定义新的抽象方法,不需实现父类的抽象方法
	public void sleep(){
		System.out.println("睡觉");
	}
}

非抽象类继承抽象类

class Man extends Person{
//必须实现所有的抽象方法,父类的 祖父类的
	public void eat(){
		System.out.println("爸爸教我吃");
	}
	public void move(){
		System.out.println("爷爷教我动");
	}
}

3.抽象类的应用-----模板方法模式
模板方法模式:定义一个操作中的算法的骨架,而将一些可变部分的实现延迟到子类中
模板方法设计模式是的子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤
如定义人、狗、猫,三类均为动物可吃可动可叫。
但是三类吃的不一样,动起来也不一样,叫声也不一样
先定义一个动物抽象类:`

abstract class Animal{
	public abstract void eat();//可吃
	public abstract void move();//可动
	public abstract void voice();//可发声
}

在定义人:

class Person extends Animal{
	public void eat(){
	System.out.println("我吃熟肉");
	}
	public void move(){
	System.out.println("我两腿走路");
	}
	public void voice(){
	System.out.println("我能嘤嘤嘤");
	}
}

定义小狗勾

class Dog extends Animal{
	public void eat(){
	System.out.println("我吃狗粮");
	}
	public void move(){
	System.out.println("我四腿奔跑");
	}
	public void voice(){
	System.out.println("我能汪汪汪");
	}
}

定义小猫咪

class Cat extends Animal{
	public void eat(){
	System.out.println("我吃猫粮");
	}
	public void move(){
	System.out.println("我飞檐走壁");
	}
	public void voice(){
	System.out.println("我能喵喵喵喵喵喵,在你面前撒个娇");
	}
}

测试类:

public class text{
	public static void main(String[] args){
		Person per=new Person();
		per.eat();
		per.move();
		per.voice();
		Dog dog=new Dog();
		dog.eat();
		dog.move();
		dog.voice();
		Cat cat=new Cat();
		cat.eat();
		cat.move();
		cat.voice();
	}
}

输出结果:
在这里插入图片描述
4.注意事项
抽象类不能被实例化
抽象类不能声明为final
抽象类可以有构造方法
抽象类和接口是配合而非替代关系,它们经常一起使用,接口声明能力,抽象类提供默认实现,实现全部或部分方法,一个接口经常有一个对应的抽象类。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值