Java中的静态方法、类方法、成员方法、构造方法、非静态方法,各方法的定义以及个方法的功能详解大全
这几天好多方法给我整不会了,给我烦的,你们应该可以体会这种感觉
我们一开始认识的方法,无非就是main方法,整个语法是这样的:
public static void main(String[] args) {}
但后来接触导了构造方法、静态方法、非静态方法,于是麻烦就蜂拥而至,写这篇文章也是为了帮助个位兄弟更好理解每个方法的格式以及用法, 帮助我们更好的学习
首先我们先说一下,我们一开始学习Java时,创造的普通方法:
public class TestA {//成员变量String name;String sex;int age;//成员方法public void eat(){System.out.println(name+"这是吃饭的成员变量");}
}
在我们刚接触Java的时候,除了main方法,我们创建的变量和方法大都是这个格式,我们开始接触变量的时候,我们就可以知道,变量一共有两种,一种是成员变量,一种是局部变量,也有人把成员变量说成全局变量的,这个说法是错的,记好,只有成员、局部两种;
因为我们写的时候直接写String name,其实它完整的样子应该是:public String name,只不过我们没有写的话,系统会默认属于public;
像这种格式的话,属于成员变量和成员方法,在本类里面,是通用的。
再来看方法public void eat,成员方法,使用public进行修饰,void这个属于空值,有一定Java基础的同学应该知道,方法分有无返回值的,有void就代表这个方法无需返回值,如果有返回值,我们把void去掉,写public 当前返回值的类型 方法名(){}就可以了;
由此可知,我们一开始刚接触Java的时候,所创造的Java方法,大都是成员方法;
再到之后,我们开始接触私有变量,目的也是为了我们整体程序的安全性,把变量设置为私有的,比如:
public class TestA {//成员变量private String name;private String sex;private int age;//成员方法public void eat(){System.out.println(name+"这是吃饭的成员变量");}
}
这里之前默认的public变成了private,这个单词中文就代表了私有的,那用这个修饰的变量,也代表是私有属性,那属性私有的话,我们就不能用之前new那种方法调用,调用不到,会报错:
之前是公共的属性,我们直接可以通过new这种方式直接调用,但是通过这种方法,我们无法调用其他类的私有属性,这个时候,我们就要使用了另一种方法,叫做构造器/构造方法/构造子,这是三个名字,其实是一样的东西,只是叫法不一样,知道一下就可以了
上面这张图,就是构造方法,大家可以看到,它既没有void修饰,也没有返回值类型修饰,那是因为,我们平时写普通方法时,写void或者返回值类型,就是想告诉系统,我们这个方法有没有返回值;
但是我们的构造方法种,Java规定的就是没有返回值,系统他已经知道了,所以我们就不用反馈系统这个构造方法它到底有没有返回值;
所以我们直接使用public 方法名(){}即可,其中有参和无参,这个根据需要来选择即可,但一般的类中,都会有一个无参构造和一个有参构造,这个你们后面学习就知道了,this就是帮助你后面掺入的参数及时的传送到成员变量里面而已:当然你们如果看不懂this,也可以这样理解:
这个的话,意思也很明显,后面我们会通过传参的方式,分别掺入abc,然后我们在这里引入上面的成员变量赋值,这样看起来很乱,并且不好区分,因为,我们就是要从后台输入name–》成员变量的name,这里又用a这个变量从中间转一下,这样很麻烦,我们使用this,一方面它可以自动生成,另一方面它看起来比较好;
但是同时也要注意,方法名必须与类名一模一样,严格区分大小写;
最后说一下静态方法,静态方法与一个单词有关“static”;我们对这个单词并不陌生,比如我们的main方法:public static void main(String[] args),被static方法装饰的就是静态方法,同时被static修饰的变量叫静态变量,同时也叫类变量,因为他修饰的变量或者方法,属于全类通用的;
在被static修饰的方法叫做静态方法,被他修饰的类或者方法,我们都可以在其他地方,使用类名.方法/属性名调用:
上面我们已经用static进行修饰了,下面看一下如果调用:
public class TestB1 {public static void main(String[] args) {TestB testB1 = new TestB();TestB.name="张三";TestB.a(12);}
}
我们可以看到,我们直接使用类名就可以调用了,但是在调用静态方法时,也要注意变量的赋值流程,否则容易出错;
非静态的方法,就很好理解,就是没有被static修饰过的方法,就是非静态方法,其中我们也要遵循一定的原则:
静态方法是在类中使用staitc修饰的方法,在类定义的时候已经被装载和分配。而非静态方法是不加static关键字的方法,在类定义时没有占用内存,只有在类被实例化成对象时,对象调用该方法才被分配内存;
静态方法中只能调用静态成员或者方法,不能调用非静态方法或者非静态成员,而非静态方法既可以调用静态成员或者方法又可以调用其他的非静态成员或者方法;
最后,安排一张心灵净化图,防止心身疲劳
Java中的静态方法、类方法、成员方法、构造方法、非静态方法,各方法的定义以及个方法的功能详解大全相关推荐
- java中example函数作用_mybatis mapper学习4-MyBatis的Mapper接口以及Example的实例函数及详解...
mybatis能够自动生成sql语句,也能够添加自定义sql语句 使用mybatis generator生成XX.java,XXExample.java,XXmapper.java,XXmapper. ...
- java中if结构用图表示_Java语法基础之选择结构的if语句、switch语句详解
[前言] 流程控制语句: 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的.也就是说程序的流程对运行结果有直接的影响.所以,我们必须清楚每条语句的执行流程.而且,很多时候我们要通过 ...
- 【HTML5】html5中列表、表格、表单控件、浮动框架及结构化标签知识详解大全
一.列表 1.有序列表 <ol>有序列表 order list <li>列表项</li> <li>列表项</li> </ol> ...
- 谈谈java中成员变量与成员方法继承的问题
谈谈java中成员变量与成员方法继承的问题 关于成员变量和成员方法的的继承问题,我也可以做一个小测试,来看看结果. 首先我们先创建一个父类: 其次再创建一个子类,子类中要比父类中少一个成员方法: 这样 ...
- Java中实例方法与类方法
Java中实例方法与类方法 一.实例方法与类方法的定义 二.实例方法和类方法的区别 一.实例方法与类方法的定义 1.声明方法时,方法类型前面不使用static修饰的是实例方法,用static修饰的是类 ...
- java返回有什么用,java中的return this什么时候用,返回的是类里面的方法类型,还是实例类?上面的代码什么意思...
java中的return this什么时候用,返回的是类里面的方法类型,还是实例类??下面的代码什么意思? public class RoleService extends BaseService { ...
- [转载] JAVA 堆栈 堆 方法区 静态区 final static 内存分配 详解
参考链接: 在Java中为静态最终static final变量分配值 转载来源:https://blog.csdn.net/peterwin1987/article/details/7571808 J ...
- java 8 新功能详解_Java 8和Java 14之间的新功能
java 8 新功能详解 从版本9开始,Java每6个月就有一次新功能,因此很难跟踪这些新更改. 互联网上的大多数信息都描述了最近2个Java版本之间的变化. 但是,如果您的情况与我相似,则说明您使用 ...
- java 8 新功能详解_Java 8的8个新功能
java 8 新功能详解 注意:确保还检查了我们的详细教程Java 8 Features – ULTIMATE Guide . Jdk 1.8(又名Java 8)今天发布,这意味着它的通用发布版本已经 ...
- C语言 -- string.h中函数功能详解与手动实现 - 02(常用函数memcpy、memmove、strcpy、strdup、strcat、strtok...)
内容预览 3.5.搬迁类型 --- 函数功能详细说明 :将内存空间中内容移动.复制到另一内存空间 3.6.搬迁类型 --- 函数功能测试与手动实现 3.6.1.memcpy.memccpy 3.6.2 ...
最新文章
- 如何使用netwokx进行复杂网络的中心性分析?
- 硬肝!超详细matplotlib基础介绍!!!
- Keil 运行.bat脚本文件
- OpenCV 机器视觉入门精选 100 题(附 Python 代码)
- svn 分支合并(Subclipse例子)
- ES6类的使用和定义.Json.Promise对象的使用
- 【渝粤题库】国家开放大学2021春2238个案工作题目
- CMD启动mysql服务“发生系统错误 5”的解决办法
- 对象交互。英雄搏击游戏。0107
- 14012.petalinux小知识点
- Fatal error: Uncaught Error: Call to undefined function gzinflate()
- android 魅族扫码,教你扫码登录王者荣耀,支持魅族OPPO华为小米苹果安卓等手机,超简单...
- wxWindows入门
- 项目进度管理:制定进度计划
- centos检测不到磁盘_linux – Centos 7服务器看不到磁盘阵列磁盘
- mysql查询登录端口_mysql查看、修改端口、指定端口登录
- 我的第一个HTML5游戏——打地鼠总结及源码
- AutoCAD的下载与安装
- 《卓有成效的管理者》第一次心得
- python selenium移动端网页下拉刷新
热门文章
- 【三维路径规划】基于matlab Nsga-2算法求解无人机三维路径规划【含Matlab源码 1455期】
- 【优化预测】基于matlab差分进化算法优化BP神经网络预测【含Matlab源码 1315期】
- 【物体检测】基于matlab GUI形态学物体检测【含Matlab源码 945期】
- 【数字信号调制】基于matlab GUI AM+DSB+SSB+ASK+FSK+PSK调制解调【含Matlab源码 058期】
- python3 相对路径导入_Python中相对路径(导入)和绝对路径(导入)的区别
- 实现无缝滑屏怎么实现_无缝扩展人工智能以实现分布式大数据
- c语言数组转指针,(转)c语言指针数组
- qfile.remove 删除已经被加载的文件_Milvus数据管理:删除的实现原理
- java继承 值_java继承
- php自动发卡程序8.0_vfkphp