Java中抽象类与方法的重写方式

 更新时间:2023年02月15日 09:40:43   作者:MC乱码  
这篇文章主要介绍了Java中抽象类与方法的重写方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

1. 抽象类

  • 关键字:abstract

类:用来描述一类具体的事物

抽象类:抽象的、模糊的、不具体的类

  • 在Java的普通类中是不允许多继承的,原因是会出现调用
  • 不明确的问题;

总结:父类中的功能是不能删除的,但其形式是不需要的(没有存在的意义),此时就可以将父类中功能的 具体实现 形式 给删掉;

类的具体实现:创建对象

抽象方法存在的意义是什么?

  • 用于定义功能,明确该类具备此功能-----规则

特点:

  • 1.抽象类可以有抽象方法,也可以有非抽象的方法
  • 2.抽象类中可以有构造器,但是不能创建对象,空间需要由子类对象来开辟

2. 方法的重写

方法重载:在同一个类中,方法名相同,参数列表不同(参数位置、参数个数、参数类型),与返回值无关

方法重写:在继承或实现的关系下,方法名相同,参数列表相同,返回值类型相同,子类的修饰权限要大于或等于父类中的修饰符权限

1. 什么情况下需要重写父类中的类型呢?

1.1 子类有自己的特殊实现形式时,此时就可以重写父类中的功能

  • 如果没有特殊实现就不需要重写(此时重写不是必须的)

2.1 所有的子类都有自己的特殊实现形式时,父类中的功能也就没

  • 必要有具体的实现,就会变成抽象,那此时,其所有的子类都
  • 必须重写父类中全部的抽象方法

2. @Override 称为注解

此处的含义是重写,如果方法上加上了该注解,就代表该方法是从父类中重写过来的(如果此时删除了父类中的该方法,子类就会报错)

// 调用
public class Demo {
    public static void main(String[] args) {
        
    }
}
package day0202;
// 爷爷类(抽象类)
public abstract class Old {
    private String type;
    private String name;
    private String color;
    private int age;
    
    public abstract void eat();
    public abstract void sleep();
    public abstract void weight();
    
    
    public void ear() {
        System.out.println("圆圆的");
    }
    public void tail() {
        System.out.println("尾部是卷的");
    }
    
    
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getColor() {
        return color;
    }
    public void setColor(String color) {
        this.color = color;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    
}
package ****;
// 父类继承爷爷类
    public class Parent1 extends Old {
        
        private String eyes;
        
        
        @Override
        public void eat() {
            super.ear();
            super.tail();
            System.out.println("吃肉,通过哺乳其他动物");
        }
        
        @Override
        public void sleep() {
            System.out.println("困了就睡觉");
        }
        
        @Override
        public void weight() {
            System.out.println("比较大");
        }
    }

当在继承关系中,子父类中有相同的方法或变量时,程序的编译执行有什么区别

  • 非静态的方法:执行的时候走的是子类中覆盖后的方法
  • 非静态的变量:执行的时候走的是子类中的变量

静态的方法:执行的是调用者中的方法

静态的属性:执行的是调用者中的方法

抽象方法不能与哪些关键字共存?

  • private:private修饰的方法只能在本类中使用,而抽象方法要求必须让子类实现,两者相互矛盾
  • final:final修饰的方法不能被重写,而抽象方法必须要被重写,
  • static:static修饰的方法可以通过类名直接调用,而抽象方法是没有方法体的

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java多线程中断机制三种方法及示例

    Java多线程中断机制三种方法及示例

    这篇文章主要介绍了Java多线程中断机制三种方法及示例,向大家分享了这三种方法的介绍几代码示例,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Java的JDBC中Statement与CallableStatement对象实例

    Java的JDBC中Statement与CallableStatement对象实例

    这篇文章主要介绍了Java的JDBC中Statement与CallableStatement对象实例,JDBC是Java编程中用于操作数据库的API,需要的朋友可以参考下
    2015-12-12
  • SpringBoot压缩json并写入Redis的示例代码

    SpringBoot压缩json并写入Redis的示例代码

    由于业务需要,存入redis中的缓存数据过大,占用了10+G的内存,内存作为重要资源,需要优化一下大对象缓存,所以我们需要对json进行压缩,本文给大家介绍了SpringBoot如何压缩Json并写入redis,需要的朋友可以参考下
    2024-08-08
  • 用C和JAVA分别创建链表的实例

    用C和JAVA分别创建链表的实例

    使用用C和JAVA分别创建链表的方法,创建链表、往链表中插入数据、删除数据等操作。
    2013-10-10
  • 彻底搞懂Java多线程(一)

    彻底搞懂Java多线程(一)

    这篇文章主要给大家介绍了关于Java面试题之多线程和高并发的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2021-07-07
  • Java纯代码实现导出pdf合并单元格

    Java纯代码实现导出pdf合并单元格

    这篇文章主要为大家详细介绍了Java如何纯代码实现导出pdf与合并单元格功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • 基于resty orm的ActiveRecord操作数据指南

    基于resty orm的ActiveRecord操作数据指南

    这篇文章主要为大家介绍了基于resty orm的ActiveRecord操作数据指南,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03
  • Java中如何获取图片文件格式(后缀)

    Java中如何获取图片文件格式(后缀)

    这篇文章主要介绍了Java中如何获取图片文件格式(后缀),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Spring事务失效的8大原因详解

    Spring事务失效的8大原因详解

    这篇文章主要介绍了Spring事务失效的8大原因详解,这里以 MySQL 为例,其 MyISAM 引擎是不支持事务操作的,InnoDB 才是支持事务的引擎,一般要支持事务都会使用 InnoDB,需要的朋友可以参考下
    2023-09-09
  • 你什么是Elastic Stack(ELK)

    你什么是Elastic Stack(ELK)

    这篇文章主要介绍了你什么是Elastic Stack(ELK),ELK是三款软件的简称,分别是Elasticsearch、Logstash、Kibana组成,需要的朋友可以参考下
    2023-04-04

最新评论