Java中抽象类与方法的重写方式
作者:MC乱码 发布时间:2023-08-25 09:20:29
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修饰的方法可以通过类名直接调用,而抽象方法是没有方法体的
来源:https://blog.csdn.net/qq_49641620/article/details/109608447


猜你喜欢
- 一、前言介绍:1.1 项目摘要 信息内容数据从传统到当今,一直在改变,忽然互联网技术让传统信息内容管理见到划时代的黎明
- servlet实现文件上传,预览,下载和删除,供大家参考,具体内容如下一、准备工作:1.1 文件上传插件:uploadify;1.2 文件上
- 引言什么?兔了个兔?吐了还要吐?首先今天,我们自己用android程序实现一个兔年的新年贺卡。下面就是见证美好的时刻,上效果。好,我们来使用
- 本文实例为大家分享了java实现webservice方式的具体代码,供大家参考,具体内容如下经过测试 jdk1.6.10以下会出现bug 建
- 节点折叠 this.treeList1.CollapseAll(); 一、简介二、属性列表1、OptionsSelection:
- 在上篇文章给大家介绍了Mybatis中#{}和${}传参的区别及#和$的区别小结,如果大家有需要可以参考下。$和#简单说明:#相当于对数据
- JAXBContext 设置xml节点属性在使用JAXBContext将javaBean转化为xml时会出现这样的需求:<xml ve
- 本文实例为大家分享了Java实现石头剪刀布的具体代码,供大家参考,具体内容如下代码:package com.neusoft.test;imp
- 本文实例讲述了Java实现过滤掉map集合中key或value为空的值。分享给大家供大家参考,具体如下:import java.util.C
- java.lang.StackOverflowError出现的原因严重: Exception initializing page conte
- SpringBoot 项目启动之后执行自定义方法的两种方式在测试配置中心的配置时,想在项目启动成功之后打印配置项,然后需要执行自定义的类一般
- 前几天刚好有需求要把emoji对应的Unicode编码转换成文字,比如1f601对应的这个笑脸😁,但没有找到C#的把1f601转换成文字的方
- 文件上传在Web应用中非常普遍,要在Java Web环境中实现文件上传功能非常容易,因为网上已经有许多用Java开发的组件用于文件上传,本文
- 众所周知,在墙内开发很头疼的一件事就是Maven仓库的连接速度太慢。虽然对于很多互联网企业和大中型软件公司,建个镜像是分分钟的事。但对于个人
- Java 实现 Http Server,模拟前端接口调用前言: 最近看到一个很有意思的东西,手写简单的 Http Server,而且只需要使
- 最近在公司的功能需求中,需要实现可以签到的日历,签到后在签到过的日期做标志。本功能参考了网上一些大神的日历控件,在此基础上进行修改,已满足本
- 一、创建 Android Project在新建对话框中输入 App 属性,SDK版本全部选最新的,不作版本兼容。主题选择 Holo Dark
- Java Lambda 源码分析问题:Lambda 表达式是什么?JVM 内部究竟是如何实现 Lambda 表达式的?为什么要这样实现?一、
- 1.添加引用工具箱---右键---选择项--COM组件--Adobe PDF Reader2.使用方法OpenFileDialog open
- 前言首先,我们要讲的是JVM的垃圾回收机制,我默认准备阅读本篇的人都知道以下两点:JVM是做什么的Java堆是什么因为我们即将要讲的就是发生