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修饰的方法可以通过类名直接调用,而抽象方法是没有方法体的
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
玩转spring boot 结合AngularJs和JDBC(4)
玩转spring boot,这篇文章主要介绍了结合AngularJs和JDBC,玩转spring boot,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-01-01
Java Web学习之Cookie和Session的深入理解
这篇文章主要给大家介绍了关于Java Web学习之Cookie和Session的相关资料,需要的朋友可以参考下2018-04-04
java中的JsonSerializer用法,前后端单位转换必备
这篇文章主要介绍了java中的JsonSerializer用法,前后端单位转换必备!具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-10-10
Intellij Idea中进行Mybatis逆向工程的实现
这篇文章主要介绍了Intellij Idea中进行Mybatis逆向工程的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-05-05
Java web访问http://localhost:8080/xx/xx.jsp报404错误问题的解决方法
这篇文章主要给大家介绍了关于Java web访问http://localhost:8080/xx/xx.jsp报404错误问题的解决方法,很多小伙伴在刚开始用Springboot整合jsp开发时都会遇到这个问题, 按照别人的教程一步一步搭建,但就是会报404,文中介绍的非常详细,需要的朋友可以参考下2023-04-04
Maven依赖中scope的runtime和provied的区别及说明
这篇文章主要介绍了Maven依赖中scope的runtime和provied的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-11-11
javax.validation.constraints注解使用
这篇文章主要介绍了javax.validation.constraints注解使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-07-07


最新评论