静态与非静态

  • 静态方法——类方法

是以static为关键词,从属于类,与类共生

public class Students{//class修饰的是一个类,所以这是一个学生类

    public static void say(){//方法前加static修饰,则是静态方法,在其他类中可以直接调用
System.out.println()
}
}//在下面的类中直接调用
public class Demo{
public static void main(String() args){
Students.say();//调用上方中类的方法;因为是静态方法;直接类名.方法即可;
//只要一个类的方法是静态方法,不管这个类是是否在本类中,调用静态方法时,通过类名.方法即可调用!
}
}
  • 非静态方法——实例方法,成员方法

对象专用方法,与对象共生

public class Students

    public void say(){//方法前没有static修饰,则是非静态方法,在其他类中可以不能直接调用!不能直接调用!不能直接调用!
System.out.println()
}
}//在下面的类中进行调用
public class Demo{
public static void main(String() args){
//若果要调用类的非静态方法,则需要将类实例化,即以类为模板,建立一个单独的对象;实例化就是创造对象
//上面为学生类,我们新建立一个学生,则该学生享有类(模板)的属性和方法
Students xiaoMing=new Students();//我们以学生类创造了一个学生;那么这个学生则是学生类型,将他命名为xiaoMing;
xiaoMing.say();//我们创造的xiaoMing享有模板的一切属性和方法;所以可以通过对象名.方法 }
}//非静态方法为对象专属,只能通过对象调用
  • 静态方法与非静态方法之间的调用关系

在同一类中:

静态方法之间可以直接调用、不可以直接调用非静态方法

非静态方法之间可以直接调用、可以直接调用静态方法

静态方法A 非静态方法A
静态方法B 是否可以被直接调用 可以 可以
非静态方法B 是否可以被直接调用 不可以 可以
  1. 为什么在同一类中静态方法可以直接互相调用呢?

静态方法与类一起加载,两者可以直接相互调用。

  1. 为什么在同一类中静态方法不可以直接调用非静态方法呢?

静态方法与类一起加载,而非静态方法只能通过对象建立后才能加载,等于说已经加载的方法不能调用还没有加载的方法,所以不能直接使用。

  1. 为什么同一类中非静态方法之间可以直接调用?

因为两个非静态方法在对象建立后被同时加载,所以可以直接调用。

public class Demo{
public static void main(String[] args){ }
public static void a(){
//a为静态方法,与Demo类同时加载,而下方b方法并未加载,b需要Demo实例化后,即创造一个对象后才能加载
//所以a不能调用b
}
public void b(){ }
}
public class Demo{
public static void main(String[] args){ }
public void a(){
//a和b为两个非静态方法,在加载时没有时间差,可以互相调用,对象建立,两个方法同时加载
}
public void b(){ }
}

Day17.1:静态与非静态的详解的更多相关文章

  1. 技巧:Linux 动态库与静态库制作及使用详解

    技巧:Linux 动态库与静态库制作及使用详解 标准库的三种连接方式及静态库制作与使用方法 Linux 应用开发通常要考虑三个问题,即:1)在 Linux 应用程序开发过程中遇到过标准库链接在不同 L ...

  2. 值类型与引用类型(特殊的string) Typeof和GetType() 静态和非静态使用 参数传递 相关知识

    学习大神博客链接: http://www.cnblogs.com/zhili/category/421637.html 一 值类型与引用类型 需要注意的string 是特殊类型的引用类型. 使用方法: ...

  3. .NET 基础 一步步 一幕幕[面向对象之静态、非静态]

    静态.非静态 先来看一段代码来区分静态与非静态: using System; using System.Collections.Generic; using System.Linq; using Sy ...

  4. C#基础知识之静态和非静态

    项目中静态和非静态常被用到,什么时候需要用静态的,什么时候需要使用非静态,以及他们的区别是什么? 一.概述 静态和非静态的不同地方,就是静态从程序一启动就会一直占用内存,而非静态只有在实例化的时候才会 ...

  5. C#基础--类/接口/成员修饰符,多态、重载、重写,静态和非静态

    C#基础--类/接口/成员修饰符,多态.重载.重写,静态和非静态 类/接口/成员修饰符 C#修饰符---接口: 接口默认访问符是internal接口的成员默认访问修饰符是public C#修饰符--类 ...

  6. 初学者必看:.NET 中的静态与非静态的异同

    对于初学者来说,.NET 的静态和非静态一直比较难掌握,这里做一个总结,介绍静态类和普通类,静态方法和实例方法,静态构造函数和实例构造函数,静态字段和非静态字段的区别. 静态类 vs 普通类 静态类与 ...

  7. 20151024_001_C#基础知识(静态与非静态的区别,值类型和引用类型,堆和栈的区别,字符串的不可变性,命名空间)

    1:我们把这些具有相同属性和相同方法的对象进行进一步的封装,抽象出来类这个概念. 类就是个模子,确定了对象应该具有的属性和方法. 对象是根据类创建出来的. 2:类:语法 [public] class ...

  8. c#基础3-方法的重载静态和非静态,字段属性,方法

    方法的重载概念:方法的重载指的就是方法的名称相同给,但是参数不同.参数不同,分为两种情况1).如果参数的个数相同,那么参数的类型就不能相同.2).如果参数的类型相同,那么参数的个数就不能相同.***方 ...

  9. Net基础篇_学习笔记_第十一天_面向对象(静态与非静态 static)

    static:静态的 静态和非静态的区别1).在非静态类中,既可以有实例成员(非静态成员),也可以有静态成员. 成员----方法/函数2).在调用实例成员的时候,需要使用对象名.实例成员;    在调 ...

  10. C# 面向对象3 静态和非静态的区别

    静态和非静态的区别 1.在非静态类中,既可以有实例成员(非静态成员),也可以有静态成员. 2.在调用实例成员的时候,需要使用对象名.实例成员; 在调用静态成员的时候,需要使用类名.静态成员名; 总结: ...

随机推荐

  1. 如何查找并简单分析core文件

    当系统发生coredump时,通常需要通过分析core文件来定位问题所在,但实际工作中,有时却发现core 文件找不到,或者core文件被删除了. 一.core文件没有生成 KINGBASE core ...

  2. 使用 Vue3 构建 Web Components

    有时候想写一个无关框架组件,又不想用原生或者 Jquery 那套去写,而且还要避免样式冲突,用 Web Components 去做刚觉就挺合适的.但是现在 Web Components 使用起来还是不 ...

  3. PLM产品生命周期管理,包含哪些阶段?

    PLM:Product Lifecycle Management=产品生命周期管理.产品的整个生命周期包括:投入期.成长期.成熟期.衰退期.结束期.PLM系统使企业可以把多年积累的所有产品相关数据放到 ...

  4. 《Win10——如何进入高级启动选项》

    Win10--如何进入高级启动选项       第一种方法: 管理员命令提示符输入如下代码,自动重启并进入高级启动选项. shutdown /r /o /f /t 00     第二种方法: 1. 管 ...

  5. Django提交时报错

    错误描述: RuntimeError at /saveBlog You called this URL via POST, but the URL doesn't end in a slash and ...

  6. 第六章:Django 综合篇 - 13:发送邮件

    在Python中已经内置了一个smtp邮件发送模块,Django在此基础上进行了简单地封装,让我们在Django环境中可以更方便更灵活的发送邮件. 所有的功能都在django.core.mail中. ...

  7. 安装MySQL8 工具集

    下载地址:https://downloads.mysql.com/archives/utilities/ # wget https://downloads.mysql.com/archives/get ...

  8. 开源 Web 相册程序: Photoview 和数据可视化生成工具:Datawrapper

    Photoview Photoview是一个开源 Web 相册程序,Go 语言写的,使用 Docker 安装,可以用来快速架设个人相册. github地址:https://github.com/pho ...

  9. 使用filebeat解析nginx的json格式日志,并且保存原始message字段的值,输出到es中并通过grafana图形化显示

    1.nginx日志调成json样式 log_format json '{"@timestamp":"$time_iso8601",' '"server ...

  10. python运行以及入门语法基础

    pycharm下载与使用 1.pycharm官网下载(直接到pycharm下载地址) http://www.jetbrains.com/pycharm/download/#section=window ...