java基础(抽象类和抽象方法)

抽象类:抽象方法所在的类。抽象类可以包含抽象方法。也可以不包含抽象方法。
抽象方法:abstract修饰的方法。不用大括号。抽象方法必须在抽象类中。

public abstract class Animal {
	public abstract void eat();
	public void method() {
		System.out.println("普通方法");
	}
}

注意:

  • 抽象类不能实例化对象,必须用一个子类继承抽象类。
  • 子类必须覆盖重写父类中所有的抽象方法。(子类去掉父类方法中的abstract关键字,然后补上方法体大括号)
  • 创建子类对象。
public abstract class Animal {//声明一个抽象类
	public abstract void eat();//抽象方法
	public void method() {//普通方法
		System.out.println("普通方法");
	}
}
public class Cat extends Animal{//子类继承抽象父类
	@Override
	public void eat() {
		//覆盖重写父类中的抽象方法方法,这里因为不是抽象方法,子类也不是抽象类,可实例化。
		System.out.print("猫吃鱼");
	}
}
public class TestAbstract {
	public static void main(String[] args) {
		Cat cat = new Cat();//实例化子类对象
		cat.eat();//调用子类方法
	}
}
//猫吃鱼

其他注意:

  • 抽象类可以有构造方法,这是供子类实例对象时调用的。
  • 抽象类的子类必须重写父类中所有的抽象方法。除非子类也声明为抽象类。
public abstract class Fu {
	public Fu() {
		System.out.println("这是父类构造方法");//自己没办法实例调用,供子类调用
	}
	public abstract void eat();//父类中的抽象方发1
	public abstract void drink();//父类中的抽象方发2
}
public class Zi extends Fu {
	public Zi() {
		//这里默认调用了了父类的构造方法
		System.out.println("这是子类中的构造方法");
	}
	@Override
	public void eat() {
		System.out.println("吃苹果");
	}
	@Override
	public void drink() {
		System.out.println("喝可乐");//覆盖重写了父类中所有的抽象方发
	}
}
public class TestAbstract {
	public static void main(String[] args) {
		Zi child = new Zi();
		child.eat();
		child.drink();
	}
}
//这是父类构造方法
//这是子类中的构造方法
//吃苹果
//喝可乐
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值