JavaSE:抽象(abstract)

抽象(abstract):

  抽象类:使用abstract修饰的类。
抽象类的特点:
1.抽象类中可以包含抽象方法,因为抽象方法只有方法的声明,没有方法的实现,所以抽象类不能被实例化!

2.抽象类一定是一个父类,那么需要子类来“实现”抽象类中的抽象方法。

3.a)如果子类实现了父类中所有的抽象方法,那么该子类就能被实例化!.b)如果子类实现了父类中的部分抽象方法,那么该子类就不能被实例化,因为该子类依旧就是一个抽象类!c)抽象类和子类的关系是extends关系,从本质上来讲,抽象类就是一个特殊的普通类(包含了抽象方法)!d)关于“重写”和“实现”的理解
  重写:指的就是子类重写普通父类中的方法,那么我们就称之为重写!
  实现:指的就是子类重写抽象类中的方法,那么我们就称之为实现!

4.抽象类的组成:a)抽象类中,可以包含抽象方法,意味着可以有抽象方法,也可以没有抽象方法。b)抽象类中,可以包含属性(成员变量和静态变量)和方法(成员方法和静态方法)。c)抽象类中,可以包含静态代码块和构造代码块。d)抽象类中,可以包含构造方法,在子类的构造方法中去调用抽象类的构造方法, 从而实现给抽象类中的成员变量做初始化!
总结:抽象类就是一个特殊的类。相比较于普通类,抽象类可以包含抽象方法。

抽象方法:
声明是抽象方法:使用abstarct修饰的方法。
  a)抽象方法只有方法的声明,没有方法的实现!
  b)子类只有把抽象类中的抽象方法全部实现,那么该子类才能被实例化!
如果子类没有全部实现抽象类中的方法,那么该子类就不能被实例化,该子类依旧是一个抽象类!

抽象方法的使用场合:1)父类不能被实例化。 2)要求子类必须全部实现抽象类(父类)中的方法。3)一个类中,包含了抽象方法,也包含了普通类中的内容(属性、方法、构造方法、代码块),那么这个类必须使用abstarct修饰。

注意:
  1)abstarct和 final是反义词!
  2)abstarct不能和 final、private和static一起共存!
  3)抽象类也可以实现多态! 例如: Employee employee = new Teacher();

public abstract class Animal {
	/**
	 * 动物吃方法
	 */
	public abstract void eat();
	/**
	 * 动物睡方法
	 */
	public abstract void sleep();
}
public class Cat extends Animal {
	public void eat(){
		System.out.println("猫在吃鱼。。。");
	}

	
	public void sleep() {
		System.out.println("猫在睡觉。。。");
	}
}
public abstract class Dog extends Animal {//这里Dog对象被abstract修饰,所以对象不能被实例化,如需实例化,去掉abstruct即可。
	public void eat(){
		System.out.println("狗狗在吃狗粮。。。");
	}
	
	public void sleep() {
		System.out.println("狗狗在睡觉觉。。。");		
	}
	
}
public class Test {
public static void main(String[] args) {
	//如果也想在
	Cat cat = new Cat();
	cat.eat();
	cat.sleep();
	//Dog dog = new Dog();这里会报错,因为抽象类不能被实例化。	
}
}

运行结果:
  猫在吃鱼。。。
  猫在睡觉。。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值