static修饰的方法不能被重写可以被继承
今天我们谈谈为什么抽象类中不能有静态的抽象方法以及static修饰的方法不能被重写可以被继承
1 static修饰的方法不能被重写可以被继承
我们知道static修饰的方法为静态方法,可以直接使用类名.方法名进行调用,即该方法不属于某个对象属于该类。
我们根据下面的例子在看看static修饰的方法是否可以被重写:
---------------------
public class StaticLearnig {
public static void main(String[] args) {
SuperClass superClass=new SubClass();
superClass.a();
superClass.b();
}
}
/*
结果:
SuperClass a
SubClass b
*/ class SuperClass{
//静态方法
public static void a(){
System.out.println("SuperClass a");
}
//非静态方法
public void b(){
System.out.println("SuperClass b");
} } class SubClass extends SuperClass{
//静态方法
public static void a(){
System.out.println("SubClass a");
} //非静态方法
public void b(){
System.out.println("SubClass b");
}
}
上面的例子我们可以清晰的看出static修饰的方法根本就没有重写。static方法引用的时候应该用类名来引用,而不是对象。同时static方法不参与继承,所以在继承体系里面也不存在重写的说法。
- static修饰的方法可以被继承
class A{
public static void a(){
System.out.println("a");
}
}
class B extends A{} public class Test {
public static void main(String[] args) {
B.a();
}
}
//结果:a
//证明静态方法可以被继承
静态的方法可以被继承,但是不能重写。如果父类中有一个静态的方法,子类也有一个与其方法名,参数类型,参数个数都一样的方法,并且也有static关键字修饰,那么该子类的方法会把原来继承过来的父类的方法隐藏,而不是重写。通俗的讲就是父类的方法和子类的方法是两个没有关系的方法,具体调用哪一个方法是看是哪个对象的引用;这种父子类方法不在存在多态的性质。
对于static修饰的方法有了一定的了解,这里大家有没有想过一个问题为什么abstract修饰的方法是不可同时是static修饰的呢?
--后续部分角度一和角度二解释都有问题,不要看了
---------------------
作者:爆发的~小宇宙
来源:CSDN
原文:https://blog.csdn.net/yu0_zhang0/article/details/80996661
版权声明:本文为博主原创文章,转载请附上博文链接!
static修饰的方法不能被重写可以被继承的更多相关文章
- JAVA中的static修饰的方法不能被重写
可以重写静态方法,但重写后的静态方法不支持多态. 其实static根本就没有重写之说.static方法引用的时候应该用类名来引用,而不是对象.同时static方法不参与继承,所以在继承体系里面也不存在 ...
- java中什么时候该用static修饰方法?有什么好处或者坏处?
当一个方法或者变量需要初始化加载,或者是经常被调用的时候可以加上static.用static修饰的方法可以用类名直接调用,不用的一定要先实例化一个对象然后才可以调用比如 person这个类里面有一个方 ...
- AbStract 和Interface 方法是否能用Static修饰,为什么?
Abstract 和Interface 方法是否能用Static修饰,为什么? interface中不能含有Static方法,属性,成员变量. Abstract中可以有Static方法,属性,成员变量 ...
- Java面试 - static 修饰的变量和方法有哪些特点?
1.static修饰的变量和方法,在类加载时即被初始化,可直接通过类名.变量名和类型.方法名进行调用. 2.static修饰的变量,在类加载时会被分配到数据区的方法区.类的实例可共享方法区中的变量.如 ...
- 抽象方法为什么不能被private与static修饰
private private访问修饰符修饰的方法只能在本类当中使用.所以,必然不能用private去修饰抽象方法.抽象方法一定是要被子类去重写的. static Java中用static修饰符修饰的 ...
- 转:Java中子类是否可以继承父类的static变量和方法而呈现多态特性
原文地址:Java中子类是否可以继承父类的static变量和方法而呈现多态特性 静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法,关于static方法,声明 ...
- Java中子类是否可以继承父类的static变量和方法而呈现多态特性
静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法,关于static方法,声明为static的方法有以下几条限制: 它们仅能调用其他的static 方法. 它 ...
- Java final和static 修饰符
一.final final是不变的,最终的意思.可以用来修饰变量,方法,类. 1. 修饰变量 private final int a = 2; private final int b; // fina ...
- java final .static修饰符
static静态修饰符(使用static修饰符修饰的成员变量.常量.和成员方法成为静态变量.常量和方法,他们统称为静态成员,归整个类所有,不依赖于类的特定实例,被类的所有实例共享,只要这个类被加载,J ...
随机推荐
- WebFont-前端字体
WebFont-前端字体 前端设计时使用了一些不常用的字体,如何在客户的浏览器中正确展示? 解决方案是使用webfont,将字体置于服务端,利用 css 中的font-family进行设置,客户端展现 ...
- 【Java】JavaIO(一)、基础知识
一.常用概念介绍 Java的IO,实现输入输出的基础,可以方便的实现数据的输入输出 二.流的分类 1. 按照流向来分: a). 输入流:向应用程序输 b). 输出流:从应用程序中输出 输入输出流是站在 ...
- MYISM表并发写请求过多 导致无法被读取解决方案
MyISAM锁调度是如何实现的呢,这也是一个很关键的问题.例如,当一个进程请求某个MyISAM表的读锁,同时另一个进程也请求同一表的写锁,此时MySQL将会如优先处理进程呢?通过研究表明,写进程将先获 ...
- [C#] Delegate, Multicase delegate, Event
声明:这篇博客翻译自:https://www.codeproject.com/Articles/1061085/Delegates-Multicast-delegates-and-Events-in- ...
- Workflow笔记2——状态机工作流(转)
出处:http://www.cnblogs.com/jiekzou/p/6192813.html 在上一节Workflow笔记1——工作流介绍中,介绍的是流程图工作流,后来微软又推出了状态机工作流,它 ...
- java类的泛型DAO
@Transactional public abstract class DAOSupport<T> implements DAO<T> { protected Class&l ...
- Oracle学习笔记(十三)
十四.触发器(监听数据操作的工具) 1.什么是触发器? 数据库触发器是一个与表相关联的.存储的PL/SQL程序 作用: 每当一个特定的数据操作语句(insert.update.delete)在指定的表 ...
- UVa 10559 Blocks (DP)
题意:一排带有颜色的砖块,每一个可以消除相同颜色的砖块,,每一次可以到块数k的平方分数.求最大分数是多少. 析:dp[i][j][k] 表示消除 i ~ j,并且右边再拼上 k 个 颜色等于a[j] ...
- C++ 数据封装和抽象
C++ 数据抽象 数据抽象是指,只向外界提供关键信息,并隐藏其后台的实现细节,即只表现必要的信息而不呈现细节. 数据抽象是一种依赖于接口和实现分离的编程(设计)技术. 让我们举一个现实生活中的真实例子 ...
- 三)Wiring up jobs using triggers and the SchedulerFactoryBean
示例地址: https://github.com/witaste/quartz.git │ pom.xml │ └─src └─main ├─java │ └─cn │ └─zno │ └─job │ ...