Java-抽象

本文详细讲解了Java中抽象类的定义、使用规则,以及抽象方法的声明和继承关系中的具体要求。重点阐述了抽象类不能实例化、抽象方法的特性,以及继承情况下子类如何处理抽象方法。通过实例演示了如何创建和使用抽象类,以及避免常见误区。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入代码片记录学习过程,仅供参考,有错或者叙述不当请指出。


Java-抽象

关键字:abstract
修饰对象:类、方法

抽象(abstract)是java继承中的一个概念,一个类如果被abstract修饰,那么这个类成为一个抽象类,不能生成对象,即不能单独实例化。

如果一个类不能被实例化那写着这个类的意义在哪里呢?这就是为什么说抽象是继承中的一个概念了——抽象类就是用来被继承的。

规则
  • 抽象类不能被实例化

    public abstract class Animal{
    	
    }
    public class Main(String[] args){
        public static void main(String[] args) {
            Animal a=new Animal();//错误,抽象类不能实例化。
        }
    }
    
  • 抽象方法只能有方法名和参数列表,不能包含方法体。

    //错误
    public abstract void eat(){};//错误,抽象方法不能有方法体,即不能带有花括号。
    //正确
    public abstract void eat();
    
  • 抽象类中可以有构造方法、非抽象方法、抽象方法,也可以什么都没有

    //正确
    public abstract class Animal {
        public abstract void eat();
        public  Animal(){
            System.out.println("构造方法");
        }
        public void method(){
            System.out.println("普通方法");
        }
    }
    //正确
    public abstract class Animal {
    
    }
    
  • 含有抽象方法的类必须是抽象类

    //错误,包含抽象方法的类必须是抽象类
    public class Animal {
        public abstract void eat();
    }
    //正确
    public abstract class Animal {
        public abstract void eat();
    }
    
  • 如果一个非抽象类继承了一个抽象类,那么这个类必须重写父类中所有的抽象方法,抽象类则不必。

    如下所示,继承关系为:Animal被Dog继承,Dog被SmallDog继承。Animal和Dog都是抽象类,所以即使Dog继承自Animal,也不必要重写Animal的抽象方法,并且由于继承关系,Dog类将拥有eat()方法,即Dog类中的抽象方法有:eat()和sleep();而SmallDog是非抽象类,它必须重写父类中的所有抽象方法,它的父类是Dog,所以必须重写Dog中的抽象方法eat()和sleep()。

    public abstract class Animal {
        public abstract void eat();
    }
    public abstract class Dog extends Animal{
        public abstract void sleep();
        //由于继承,Dog将拥有eat()方法
    }
    
    public class SmallDog extends Dog {
    	 @Override
        public void sleep() {
    
        }
    
        @Override
        public void eat() {
    
        }
    }
    

记录学习过程,仅供参考,有错或者叙述不当请指出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值