Java关于抽象类和抽象方法

引入抽象:

  • 在之前把不同类中的共有成员变量和成员方法提取到父类中叫做继承。
  • 然后对于成员方法在不同子类中有不同的内容,对这些方法重新书写叫做重写;
  • 不过如果有的子类没有用继承的方法,用别的名字对这个方法命名的话,后面的人看代码的时候不是很难看懂么,这个时候就引入抽象类和抽象方法了
  • 抽象方法:就是将子类中共性的方法抽取到父类之后,由于每个子类中执行的方法具体内容不一样,所以在父类中就不能确定具体的方法体,该方法就可以定义为抽象方法。
  • 抽象类:如果一个类中存在抽象方法,那么该类就必须声明为抽象类。、

抽象类和抽象方法的定义格式

  • 抽象方法的定义格式:
  • public abstract 返回值类型 方法名(参数列表)
  • 抽象类的定义格式:
  • public abstract class 类名{}

抽象类和抽象方法的注意事项:

  • 抽象类不能实例化。
  • 抽象类中不一定有抽象方法,不过有抽象方法的类一定是抽象类。
  • 可以有构造方法

抽象类的子类:

  • 要么重写抽象类中的所有抽象方法
  • 要么是抽象类

代码分析:

在下面我会书写一个子类和一个抽象父类,一个子类代表狗,

在这里抽象父类中定义的有eat抽象方法,因为抽象方法必须在子类中重写。所以Dog子类中必须重写eat方法,如果不重写会报错

package pdsu_zjh;

public abstract class Animal {
	private String name;
	private int age;
    //空参
	public Animal() {
		super();
		// TODO Auto-generated constructor stub
	}
    //有参
	public Animal(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
    //gets代表输出,sets代表输入·
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
    抽象方法
	public abstract void eat();//抽象方法不能有方法体所以没有大括号;	
}

这是子类

package pdsu_zjh;

public class Dog extends Animal{

	
	public Dog() {
		super();
		// TODO Auto-generated constructor stub
	}

	//在这里super中的name和age可以对在父类中继承的name和age进行初始化。
	public Dog(String name, int age) {
		super(name, age);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void eat() {
		// TODO Auto-generated method stub
		
	}
	
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值