静态与非静态

  • 静态方法——类方法

是以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. 在Apache Cassandra数据库软件中报告高严重性RCE安全漏洞

    研究人员披露了ApacheCassandra一个现已修补的高严重性安全漏洞的细节,如果这个漏洞得不到解决,可能会被滥用来获取受影响安装的远程代码执行(RCE). DevOps公司JFrog的安全研究员 ...

  2. python自动化测试系列教程

    随着互联网产品更新迭代加快,Web 开发和测试的需求也越来越大.很难想象,如果阿里的双 11.京东的 618,这些庞大繁杂的系统,由工程师们一个个手动测试,将会是一个怎样费时费力.成本巨大的工程. 也 ...

  3. 当web项目没有配置<welcome-file>index_1.jsp</welcome-file>默认标签启动tomcat后默认访问的页面是什么呢?

    当web项目没有配置index_1.jsp默认标签启动tomcat后默认访问的页面是什么呢? 结果我启动后居然默认打开了index.jsp页面 为什么呢?为什么会访问我的.indexjsp页面呢?不是 ...

  4. JAVA中方法的调用主要有以下几种

    JAVA中方法的调用主要有以下几种: 1.非静态方法 非静态方法就是没有 static 修饰的方法,对于非静态方法的调用,是通过对 象来调用的,表现形式如下. 对象名.方法() eg: public ...

  5. Java String Pool--String s = new String("a") 到底创建了几个对象?

    本篇重点(tips): 1. String Pool 是以Java 中 String 对象是不可变的这一特性为基础的 2. String Pool是Heap(堆)中的一块特殊空间(JDK 1.7 之前 ...

  6. DataTable转Json格式

    public static string DataTable2Json(DataTable dt) { StringBuilder jsonBuilder = new StringBuilder(); ...

  7. 注解@PostConstruct分析

    作用 1.注解@PostConstruct可以添加在类的方法上面,如果这个类被IOC容器托管,那么在对Bean进行初始化前的时候会调用被这个注解修饰的方法 被定义在哪里? 1.被定义在了CommonA ...

  8. 新开源HTML5单文件网页版ACME客户端,可在线申请Let's Encrypt、ZeroSSL免费HTTPS多域名通配符泛域名SSL/TLS证书(RSA/ECC/ECDSA)

    目录 开源项目的起源 项目地址 使用方法 第一步:选择Let's Encrypt.ZeroSSL或其他证书颁发机构 第二步:证书配置,填写域名 第三步:完成域名所有权的验证 第四步:下载保存证书PEM ...

  9. kibana配置文件kibana.yml参数详解

    server.port: 默认值: 5601 Kibana 由后端服务器提供服务,该配置指定使用的端口号. server.host: 默认值: "localhost" 指定后端服务 ...

  10. MinIO客户端快速入门指南

    官方文档地址:http://docs.minio.org.cn/docs/master/minio-client-quickstart-guide MinIO Client (mc)为ls,cat,c ...