JAVA中的抽象类

在学习JAVA的类的时候,我们会接触到一种比较特殊的类——抽象类,首先我们看一段代码

package com;
abstract class Animal{
		public abstract void eat();
}
class Dog extends Animal{
	
     public void eat(){
     System.out.println("狗吃骨头");
     }
}
class Cat extends Animal{
	@Override
     public void eat(){
     System.out.println("猫吃鱼");
     }
}

public class AbstractDemo {
   public static void main(String[] args) {
	Cat cat=new Cat();
	Dog dog=new Dog();
	cat.eat();
	dog.eat();

}
}

在这段代码中,我们发现有重复的部分,就是public void eat()这个方法,所以我们重新写一个类Animal,让Dog、Cat去继承Animal。但是这两个类的方法相似,但是具体内容又不太一样,所以我们只能抽象它的声明,没有具体的方法体,没有具体方法的方法就是抽象方法。

abstract class Animal{
public abstract void eat();
}

这里的abstract是一个关键字,用来修饰方法和类。

注意:一个类继承抽象类需要重写它所有的抽象方法

class Cat extends Animal{
    @Override
     public void eat(){
     System.out.println("猫吃鱼");
     }
}

如果我们不想重写抽象方法,那么这个类必须是抽象类

abstract class Cat extends Animal{

}

抽象类的特点:

(1)抽象方法只能在抽象类里

(2)抽象类/方法必须使用abstract修饰

(3)抽象类不能创建对象(不能实例化)但是抽象类有构造方法,因为需要对抽象类的成员变量初始化

(4)抽象类中可以有非抽象的方法

(5)抽象类和类的关系也是继承

(6)一个类继承了抽象类要么重写所有抽象方法,要么它自己是抽象类

final:  关键字

      修饰的类不能被继承

      修饰的成员变量是常量

      修饰的成员方法不能被重写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值