JAVA封装性

1、封装性的概念
(1)封装性是面向对象思想的三大特征之一
(2)封装就是隐藏实现细节,仅对外提供访问接口。
(3)属性的封装、方法的封装、类的封装、组件的封装、模块化的封装、系统级封装。
2、封装的好处
1、模块化
2、信息隐藏
3、代码重用
4、插件化易于调试
5、具有安全性
3、封装缺点
1、会影响执行效率
4、成员变量与局部变量
(1)在类中的位置不同
成员变量:在类中定义
局部变量:在方法中定义或者方法的参数
(2)在内存中的位置不同
成员变量:在堆内存(成员变量属于对象,对象进堆内存)
局部变量:在栈内存(局部变量属于方法,方法进栈内存)
(3)生命周期不同
成员变量:随着对象的创建而存在,随着对象的销毁而消失。
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失。
(4)初始化不同
成员变量:有默认的初始化值,引用类型默认为null。
局部变量:没有默认的初始化值,必须定义,赋值。然后才能使用。
注意:
局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用就近原则。

	class person{private String name; //成员变量在类中定义private  int age;//成员变量,在类中定义}public void run(int len){//参数也是局部变量int m= len; //m也是局部变量,局部变量定义在方法中!}

构造方法
1、构造方法就是类构造对象时调用的方法,用于对象的初始化工作。
2、构造方法是实例化一个类的对象时,也就是new的时候,最先调用的方法。
构造方法的定义:
构造方法是在类中定义的,构造方法的定义格式:方法名与类名相同,无返回值类型的声明。【不写void】
Dog do个= New Dog(),带括号表示调用了方法,此时调用的方法就是构造方法。

main{
Dog dog = new Dog()
}
class  Dog{
public Dog(){
System.out.println("构造方法执行了")
}

构造方法重载
无参构造方法:
public Dog(){}
带一个参数的构造方法:
public Dog(String name){
this.name= name;
}
带两个参数的构造方法:
public Dog(String name,int age){
this.name=name;
this.age=age;
}
注意:
一个类中,包含构造方法的重载【包含多个构造方法,无参、一个参数、两个参数等】
如果在类中需要相互调用:例如两个参数的构造方法需要调用一个参数的构造方法:

public Dog(String name,int age){
//表示调用自己的 带一个参数的构造方法【语法要求,必须在第一行】this(name);//this.name=name;this.age=age;
}

构造方法总结:
(1)构造方法名与类名相同,没有返回值声明(无 void)
(2)构造方法用于初始化数据(属性)
(3)每一个类中都有一个默认的无参构造方法
(4)如果类中有显示的构造方法,那么默认的构造方法无效
(5)如果类中有显示的构造方法,还想保留默认的构造方法,需要显示的写出来。
(6)构造方法可以有多个,但是参数不一样,成为构造方法的重载
(7)在构造方法中调用另一个构造方法,使用this(……),该句代码必须是第一句。
(8)构造方法之间的调用,必须有出口
(9)给对象初始化数据可以使用构造方法或setter方法,通常,两种方法都会保留。
(10)一个好的编写习惯是要保留默认的构造方法,[为了方便一些框架代码使用反射来创建对象]

this关键字
This关键字是一个很重要的概念,使用this关键字可以完成已下的操作。
调用类中的属性
public void setName(String name){
this.name = name;
}
调用类中的方法或者构造方法
表示当前对象:在方法被调用的时候,哪个对象调用了方法,在方法内的this就表示那个对象
main(){
Dog dog = new Dog();
dog.setName(“旺财”);
}

class Dog{private String name;public void setName(String name){this.name = name;// this.name === dog.name,setName 被main方法中的dog调用了,所有this代表对象dog}
}
public void eat(){// 在方法中使用this调用类中的其他方法,this可以省略System.out.println("我是"+this.getName)
}

Static关键字
作用
(1)使用static关键字修饰一个属性
声明为static的变量实质上就是全局变量。
(2)使用Static关键字修饰一个方法
通常,在一个类中定义一个方法为Static,那就是说,无需本类中的对象即可调用此方法。
(3)使用Static关键字修饰一个类(内部类)
特点
(1)静态变量或方法不属于对象,依赖于类
(2)静态变量是全局变量,生命周期从类被加载后一直到程序结束。
(3)静态变量只存储一份,在静态方法区中存储
(4)静态变量是本类中所有对象共享一份。
(5)不建议使用对象名调用静态变量,建议使用类名调用静态数据。
(6)Static修饰一个方法,那么该方法属于类,不属于对象,直接使用类名调用。
声明为Static的方法有以下几条限制
他们仅能调用其他的Static的方法
他们只能访问Static数据
他们不能以任何方式引用this(表示当前类)或Supper(表示父类)

所有对象共同的属性或方法,那么我们可以定义为Static

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/325848.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式系统的Raft算法

转载自 分布式系统的Raft算法 过去, Paxos一直是分布式协议的标准,但是Paxos难于理解,更难以实现,Google的分布式锁系统Chubby作为Paxos实现曾经遭遇到很多坑。 来自Stanford的新的分布式协议研究称为Raft,它是一个为真实世界应…

React类里面能写的东西

1.一般方法 2.赋值语句 3.静态方法 4.构造函数

构建布局良好的Windows程序

一、菜单栏控件MenuStrip: 1.name:菜单栏控件的名称 2.items:在菜单中显示项的集合 3.Text:与菜单相关联的文本 二、工具栏控件ToolStrip: 1.DisplayStyle:设置文本的显示方式,ImageAndText,显示图像和文本 2.Image:显示的图片 3.Text:显示的…

拆分:分解单块系统——《微服务设计》读书笔记

通常,我们可能已有有一个巨大的单块系统,如何实现微服务,我们需要把它分解。 从哪里开始拆分:接缝 接缝:从接缝处可以抽取相对独立的一部分代码,对这部分代码的修改不会影响系统的其他部分。这些接缝就可以…

winfrom实现简单计算器V2版本

前面,使用winform实现了个简单的计算器,今天,再来给大家看一个稍微复杂点的计算器,效果图如下: 包括归零,退格,加减乘除都已经实现,如果想要继续扩展的可以在稍微改改即可。 现在看…

ACID中C与CAP定理中C的区别

转载自 ACID中C与CAP定理中C的区别 ACID和CAP定理中都有C,代表Consistent一致性,很多人容易将这两个C混为一谈,其实这两个一致性是有区别的。 事务的定义是一系列操作要么全部成功,要么全部不成功,数据库的事务机制是…

单例模式——Java

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建…

winform通过ListView绑定数据库数据源

来,我们开始拉窗体,和我一样的这个就可以: 很简单,在窗体里面只放一个ListView控件即可,然后点击ListView的属性Columns 分别在Text里面写用户名和密码,点击确定。 然后设置显示视图View为Details&…

理解C# 4 dynamic(4) – 让人惊艳的Clay

一,多种方式初始化对象 1, 最简单的对象构建和初始化 dynamic New new ClayFactory();var person New.Person(); person.FirstName "Louis"; person.LastName "Dejardin"; 注意这里的Person并不是一个具体的,实际存在的类或者…

java实现多文件上传至本地服务器

转载自 java实现多文件上传至本地服务器 博主最近在做一个内网项目,内部可以访问外部数据,但是外部访问不了内部数据,这也就造成了可能文件无法上传,所以博主另辟蹊径,在本地服务器上建立一个文件夹专门用来存储上传…

配置struts.xml时extends=struts-default会报错,原因和解决

提示:此种解决方法只适用于Intellij IDEA,MyEclipse或者Eclipse还得另寻它法,但估计原因应该是类似的。 在Intellij IDEA 2017使用Struts2框架时,若新建项目时并未导入Struts2框架而是在后期手动新建lib目录导入Struts2框架后&…

React生命周期(新)

三个标红的需要前面加上UNSAFE_ 三个常用的组件

《坚毅》的读后感

1.你的梦想是什么?有了梦想,那么接下来呢? 2.有什么问题? 3.你每天醒来后想阿着的是什么? 4.为什么现在是正确的时机? 5.你曾经做过的最艰难的事情是什么? 6.谁希望你成功? 7.你最重…

发力企业级市场,微软Hololens开辟了一条VR新道路

近日微软Hololens可谓是动作频频,2月份Hololens与BGC Engineering合作,从矿山规划到泥石流建模,该应用程序可帮助BGC Engineering及其客户可视化一个场景并解决工程问题。 3月份HoloLens与Cigna展开医疗合作,将Hololens用于健康检…

写给工程师的10条精进原则

转载自 写给工程师的10条精进原则 引言 时间回到8年前,我人生中的第一份实习工作,是在某互联网公司的无线搜索部做一个C工程师。当时的我可谓意气风发,想要大干一场,结果第一次上线就写了人生中第一个CaseStudy。由于对部署环境…

Struts2下创建自定义类型转换器(表单中日期的处理)

在表单提交中需要有日期的输入,默认的Struts2处理机制可能不能满足需求,需要自定义一下类型转换器。如: String----->java.util.Date:输入 java.util.Date------>String:输出:查询显示,输出错误回显 …

部署:持续集成(CI)与持续交付(CD)——《微服务设计》读书笔记

一.CI(Continuous Integration)简介 CI规则1:尽量频繁地把代码签入到分支中以进行集成 CI规则2:不光要对语法进行验,也要提供一系列的自动化来验证 CI规则3:CI失败后,要把修复CI当做第一优先级的…

使用ListView控件展示数据

一、使用ListView实现大图标小图标的功能: 1.拖一个ListView控件 2.拖两个imageList控件,并且重命名为imgBig和imgSmall,分别设置两个控件的图片和大小。 3.编辑ListView的Items,添加几项(C、D、E盘) 4.通过ListView绑…