java abstract修饰符用法

java abstract修饰符用法abstract一般用来修饰类和方法,不能修饰变量

认识abstract

abstract一般用来修饰类和方法,不能修饰变量

1.abstract修饰类

abstract修饰类,会使得类变成抽象类,抽象类不能生成实例,但是可以作为对象变量声明的类型,也就是编译时类型。抽象类相当于类的半成品,需要子类继承并覆盖其中的方法。
注意:
抽象类虽然不能实例化,但是有自己的构造方法。
抽象类和接口(interface)有很大的不同之处,接口中不能有实例方法去实现业务逻辑,而抽象类可以有实例方法,并实现业务逻辑。
抽象类不能被final修饰,因为被final修饰的类无法被继承,而对于抽象类来说就是需要通过继承去实现抽象方法。

2.abstract修饰方法

abstract修饰方法会使得这个方法变成抽象方法,也就是只有声明,而没有实现,需要子类重写。
注意:
有抽象方法的类一定是抽象类,但是抽象类不一定有抽象方法。
父类是抽象类,其中有抽象方法,那么子类继承父类,并把父类中的所有抽象方法都实现了,子类才有创建对象实例的能力,否则子类也必须是抽象类。抽象类中可以有构造方法,子类在构造子类对象时需要调用父类(抽象类)的构造方法。
抽象方法不能用private修饰,因为抽象方法必须被子类重写,而private权限对于子类来说是不能访问的,所以就会产生矛盾。
抽象方法也不能用static修饰,如果用static修饰了,那么我们就可以直接通过类名调用了,而抽象方法压根没有主体,没有任何业务逻辑,这样就毫无意义了。

抽象类(abstract)和接口类(interface)的共同点:不能实例化
抽象类(abstract)和接口类(interface)的不同点:

  1. 抽象类可以声明变量,接口类不能
  2. 抽象类可以有实例方法,接口类没有
  3. 抽象类有构造方法,接口类没有
  4. 抽象类的子类可以直接调用父类(抽象类)的实例方法

创建abstract修饰的person抽象类

public abstract class person { 
   

    private String name;
    private Integer age;

    //无参构造方法
    public person() { 
   
        System.out.println("我是person抽象类,我被调用了");
    }
    
    //有参构造方法
    public person(String name, Integer age) { 
   
        this.name = name;
        this.age = age;
    }
    
    //实例方法
    public void sleep(){ 
   
        System.out.println("睡觉");
    }
    
    //抽象方法
    public abstract void eat();
    
}

创建boss子类继承person抽象类

public class boss extends person{ 
   

    public void eat(){ 
       //重写父类抽象方法
        System.out.println("我在吃饭");
    }

    public void sleep(){ 
      //覆盖父类的方法
        System.out.println("boss在睡觉");
    }

    public static void main(String[] args) { 
   
        //person boss = new boss(); //可以通过父类来接收实例化对象
        boss boss = new boss();  //在new 一个子类对象时会优先调用父类(这里指的是抽象类person)的构造器初始化,然后再调用子类的构造器。
        boss.sleep();
        boss.eat();
    }

}

运行结果:
在这里插入图片描述
纯属个人经验,喜欢的可以点赞关注,后续见!!!

今天的文章java abstract修饰符用法分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/33369.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注