java中static的用法及注意点

 更新时间:2021年03月02日 14:36:34   作者:小妮浅浅  
在本篇文章里小编给大家整理的是一篇关于java中static的用法及注意点,有兴趣的朋友们可以学习下。

在关键词的使用上,我们已经对static方法有所了解,为了防止在使用时出现一些不必要的错误,了解它的使用范围是每个人都要掌握的。本篇把static的使用注意点分为两个方面,一个是访问的范围,另一个是有关方法调用的注意,下面我们一起来看看完整的static使用注意点吧。

1、使用static方法的时候,只能访问static声明的属性和方法,而非static声明的属性和方法是不能访问的。

package com.jk.ref;
class People{
String name;
private static String country="中国";
public People(String name){
this.name=name;
}
public void tell(){
System.out.println("name:"+name+" "+"country:"+country);
}
/**
 * @return the country
 */
public static String getCountry() {
return country;
}
/**
 * @param country the country to set
 */
public static void setCountry(String country) {
People.country = country;
}
}
public class StaticDemo01 {
 
public static void main(String[] args) {
// TODO Auto-generated method stub
People.setCountry("shanghai");
People ps1=new People("zhangsan");
//People.country="上海";
ps1.tell();
People ps2=new People("lisi");
// ps2.country="上海";
ps2.tell();
People ps3=new People("wangwu");
// ps3.country="上海";
ps3.tell();
}
}

2、父类引用只能调父类和子类重写方法,父子同名方法不会覆盖而是遮蔽。

public class TestMain {
public static void main(String[] args) {
Super sup = new Sub(); //封装(向上造型)
sup.m1(); //父类引用无法调子类未重写方法,输出mi in Super
sup.m2();//调用子类方法m2,继承先构建父类方法,方法名相同覆盖(重写)方法,输出m2 in Sub
Sub sub = (Sub)sup; //拆箱(向下造型)
sub.m1(); //调用子类静态方法m1,先构建父类方法,方法名相同方法名相同遮蔽方法,输出m2 in Sub
sub.m2();//调用子类方法m2,继承先构建父类方法,方法名相同覆盖(重写)方法,输出m2 in Sub
}
}
class Super{ //父类
public static void m1() { //父类静态方法
System.out.println(“m1 in Super”);
}
public void m2() { //父类方法
System.out.println(“m2 in Super”);
}
}
class Sub extends Super{ //子类
public static void m1() { //子类静态方法
System.out.println(“m1 in Sub”);
}
public void m2() { //子类方法
System.out.println(“m2 in Sub”);
}
}

内容扩展:

深度总结

引用一位网友的话,说的非常好,如果别人问你static的作用;如果你说静态修饰 类的属性 和 类的方法 别人认为你是合格的;如果是说 可以构成 静态代码块,那别人认为你还可以; 如果你说可以构成 静态内部类, 那别人认为你不错;如果你说了静态导包,那别人认为你很OK;

那我们就先在这几方面一一对static进行总结;然后说一些模糊的地方,以及一些面试中容易问道的地方;

static方法

static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。

到此这篇关于java中static的用法及注意点的文章就介绍到这了,更多相关java中使用static的注意点内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot整合logback的示例代码

    SpringBoot整合logback的示例代码

    Logback是由log4j创始人设计的又一个开源日志组件,logback分为三个模块,在文章开头给大家介绍的很明确,接下来通过本文重点介绍下SpringBoot整合logback的方法,需要的朋友可以参考下
    2022-04-04
  • JavaScript中的isTrusted属性及其应用场景详解

    JavaScript中的isTrusted属性及其应用场景详解

    在现代 Web 开发中,JavaScript 是构建交互式应用的核心语言,随着前端技术的不断发展,开发者需要处理越来越多的复杂场景,例如事件处理、数据传递和状态管理等,本文将通过一个实际案例,深入探讨 isTrusted 属性的来源、作用,需要的朋友可以参考下
    2025-01-01
  • vue+springboot前后端分离工程跨域问题解决方案解析

    vue+springboot前后端分离工程跨域问题解决方案解析

    这篇文章主要介绍了vue+springboot前后端分离工程跨域问题解决方案解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • idea更改项目(模块)JDK版本的操作步骤

    idea更改项目(模块)JDK版本的操作步骤

    idea很多地方都设置了jdk版本,不同模块的jdk版本也可能不一样,下面这篇文章主要给大家介绍了关于idea更改项目(模块)JDK版本的操作步骤,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • Java使用Collections.sort对中文进行排序方式

    Java使用Collections.sort对中文进行排序方式

    这篇文章主要介绍了Java使用Collections.sort对中文进行排序方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • SpringBoot不读取bootstrap.yml/properties文件问题

    SpringBoot不读取bootstrap.yml/properties文件问题

    这篇文章主要介绍了SpringBoot不读取bootstrap.yml/properties文件问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java Validated 分组校验的使用

    Java Validated 分组校验的使用

    这篇文章主要介绍了Java Validated 分组校验的使用,文章记录所以在这里记录下分组校验注解@Validated的使用,具有一定的参考价值,需要的朋友可以参考一下
    2022-02-02
  • Spring Security自定义失败处理器问题

    Spring Security自定义失败处理器问题

    这篇文章主要介绍了Spring Security自定义失败处理器问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • IntelliJ IDEA修改内存大小,使得idea运行更流畅

    IntelliJ IDEA修改内存大小,使得idea运行更流畅

    今天小编就为大家分享一篇关于IntelliJ IDEA修改内存大小,使得idea运行更流畅的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • Java使用多线程异步执行批量更新操作方法

    Java使用多线程异步执行批量更新操作方法

    这篇文章主要介绍了Java使用多线程异步执行批量更新操作,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01

最新评论