20150902 Java学习笔记-构造方法,关键字,封装性
来源:互联网 发布:勇士vs马刺数据统计 编辑:程序博客网 时间:2024/06/06 03:57
1. 构造方法
构造方法的作用:在对象实例化的时候为类之中的属性进行初始化操作.
类之中编写构造方法后的结构要进行一些说明: 类之中会存在属性,构造方法,普通方法,所以一定要先写属性,随后写构造方法,最后写普通方法. 还有如果定义了多个构造方法,请按照参数的个数顺序进行排列
2.this关键字
1.程序本身具备就近取用原则, 所谓的近,是以”{}”为范围,为了明确的分辨出是属性还是参数,所以在进行属性访问的时候都要加上this,即”this.属性”的方式进行访问,结论:只要访问类之中的属性,前面永远都要加上this关键字
2.使用this还可以调用类中的方法,而对于方法有两类:
第一类:本类的普通方法,this.方法();
第二类:本类的构造方法,this();
一般而言,如果一个类中有多个构造方法的时候就可以利用this()的形式进行构造方法间的调用.但是在用this调用其他构造方法时有如下 要求:构造的调用必须放在构造方法的首行. 构造方法是在对象实例化的时候只调用一次,而对象实例化之后才可以重复调用类中的方法.同时在利用this调用构造方法的时候请保留有一个出口.至少要保留一个不使用this调用其他构造的作用.
3.this里面有个最麻烦的概念就是表示当前对象.
3.static关键字
- static定义属性
对于公共属性,最好用static定义,属性成了全局属性,所有对象所有,面对static属性可以发现由于其可以利用类名称直接调用,所以在很多书上也会将其称为类属性.对于类属性有一个最大的特征,可以在一个类没有实例化产生对象的时候,直接进行操作. 所以static定义的属性不受对象的控制,不管是否有对象,都不影响其使用,所以对于我们static属性而言,虽然定义在类之中,但是却独立于类存在
2.static定义方法
对于程序而言,属性一定要用private封装,不管static属性,还是非static属性
static定义的方法同样可以用类名调用. 在一类之中发现存在static方法,也存在有非static方法,那么这两者之间的调用是存在限制的:
- 使用static定义的方法只能够调用static属性或static方法
- 使用非static定义的方法可以调用static属性或static方法
这是语法上的限制,那么除了这些语法上的限制之外,我们来进一步分析,为什么会存在这样的限制呢?
所有的普通属性是在类对象实例化的时候才进行内存空间的分配,而所有的普通方法需要在类实例化对象产生之后才可以进行调用. static定义的属性或方法可以在类没有实例化对象的时候进行调用 .调用static方法的时候有可能还没产生实例化对象呢, 既然没产生实例化对象,我们就不能 调用属性,不能调用非static方法 ,所以进一步想既然有可能在调用static方法的时候, 没有实例化对象产生, 那么我们可能存在this这个当前对象吗? 所以Java语法限制了以上两条
4.代码块
- 所谓的普通代码块指的就是定义在方法之中,利用”{}”声明的部分.如果将代码块定义在类之中,那么就形成了构造块的概念
- 构造块优先于方法执行
3.如果在代码块上加上了static关键字,那么就表示是一个静态块,而静态块的使用要分两种情况 - 情况一:定义在非主类之中
- 情况二:定义在主类之中
静态块优先于构造块执行,并且不管你有多少个实例化对象,静态块只调用一次.一般而言,静态块往往是为static属性初始化的. 静态块的代码优先于主方法执行
5.案例实现封装
package com.buaa.day3;class emps{//雇员类 //所有属性必须使用private封装 private int empno ;//雇员编号 private double sal;//雇员薪资 private double comm ;//佣 private String ename ;//雇员姓名 private String job ;//基本工资 public int getEmpno() {return empno;} public String getEname() {return ename;} public String getJob() {return job;} public double getSal() {return sal;} public double getComm() {return comm;} public void setEmpno(int empno) {this.empno= empno;} public void setEname(String ename) {this.ename=ename;} public void setSal(double sal) { this.sal=sal;} public void setJob(String job){this.job=job;} public void setComm(double comm){this.comm =comm;} public emps(){} public emps( int empno,double sal,double comm ,String ename ,String job){ this.empno = empno;//雇员编号 this.sal = sal;//雇员薪资 this.comm = comm;//佣 this.ename = ename;//雇员姓名 this.job = job;//基本工资 } public String getIfo(){ return "雇员编号:"+this.empno+ ",姓名:"+this.ename+ ",职位:"+this.job+ ",工资:"+this.sal+ ",佣金:"+this.comm; }}public class EMP { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub emps voEmps = new emps(12,800.0,0.0,"li","clerk"); System.out.println(voEmps.getIfo());//以上代码之中发现你并没有调用setter getter 方法,那么还有必要编写吗?//setter除了设置内容的功能之外,在开发中还有取得的操作,而getter可以取得单个数据,不管是否使用,永远必须提供。 voEmps.setJob("manager"); System.out.println(voEmps.getIfo()); System.out.println(voEmps.getEname()); }}
- 20150902 Java学习笔记-构造方法,关键字,封装性
- 【Java学习笔记】数组,封装,构造与关键字
- Java学习笔记----封装和private关键字
- Java复习之类的封装、构造方法、关联、this关键字
- java中封装 关键字 构造方法 等用法详解
- Java学习笔记----构造方法
- Java 构造方法学习笔记
- 封装、构造方法、构造代码块、this关键字、static关键字
- 黑马程序员—Java面向对象(类和对象、封装、构造方法、this关键字、static关键字)
- Java封装性、构造方法、匿名对象
- 课时41|封装-构造方法,this关键字
- 面向对象 封装 private关键字 构造方法
- OC学习笔记04--id关键字与构造方法
- JAVA 封装、构造函数、this关键字 day7
- JAVA学习笔记13——final关键字+封装/隐藏
- java学习笔记(十一)封装、this关键字与static
- java个人学习笔记07(封装+构造函数+this)
- java学习笔记3封装和构造函数
- 如何写memset函数
- 树的重心 树形DP SGU 134
- 机房收费系统之优化篇
- python若干小函数的使用
- SDUTOJ3252---Lowest Unique Price
- 20150902 Java学习笔记-构造方法,关键字,封装性
- Linux套接字与虚拟文件系统(1):初始化和创建 http://www.cppblog.com/qinqing1984/archive/2015/05/03/210521.html
- android-------采用AIDL调用远程服务
- CIDR与NAT
- hdu 5417 Victor and Machine
- 【codechef】Singal Pipes(DFS求期望)
- 初始化和清除
- iOS 9.0 随机数
- POJ 2125 Destroying The Graph(二分图最小点权覆盖)