文档章节

JAVA学习笔记(5-2-封装及构造函数)

Almon
 Almon
发布于 2016/07/10 16:38
字数 698
阅读 9
收藏 0

封装

    之隐藏对象的属性和实现细节,仅对外提供公共访问方式

        优点:将变化隔离

                   便于使用

                   提高重用性

                   提高安全性

        原则:将不需要对外提供的内容都隐藏起来

                   把属性都隐藏,提供公共方法对其访问

        ——private:私有,权限修饰符,用于修饰类中的成员(变量/函数)

                                只在本类中有效

//运行结果:Person.java:11: 错误: age可以在Person中访问private
//                p.age=20;
class Person{
	private int age;
	void speak(){
		System.out.println("age="+age);
	}
}

class PersonDemo{
	public static void main(String[] args){
		Person p=new Person();
		p.age=20;
		p.speak();
	}
}

接上例:将AGE私有化以后,类以外建立了对象也不能直接访问,需要在person类中提供对应的访问形式

class Person{
	private int age;
	void speak(){
		System.out.println("age="+age);
	}
	public void setAge(int x){//访问方式
		if(x>0){
            		age=x;
			speak();
        	}
        	else{
            		System.out.println("年龄必须>0");
        	}
	}
}

class PersonDemo{
	public static void main(String[] args){
		Person p=new Person();
		p.setAge(-20);
	}
}

**私有是封装的一种表现形式


构造函数

    特点:函数名与类名相同

               不用定义函数返回值类型

               不可以写return语句

    作用:给对象进行初始化

    注意:默认构造函数的特点

               多个构造函数以重载的形式存在

class Person1{
	Person1(){
		System.out.println("Person run");
	}
}

class Person1Demo{
	public static void main(String[] args){
		Person1 p=new Person1();
	}
}

构造函数对象一旦建立就会调用与之对应的构造函数

当没有定义构造函数是,系统会默认给该类加入一个空参数的构造函数Person(){}

当在类中自定义构造函数后,默认的构造函数消失


class Person{
	private String name;
	private int age;
	Person(){
		System.out.println("A:name="+name+"__age="+age);
	}
	Person(String n){
		name=n;
		System.out.println("B:name="+name+"__age="+age);
	}
	Person(String n,int a){
		name=n;
		age=a;
		System.out.println("C:name="+name+"__age="+age);
	}
}

class Person1Demo{
	public static void main(String[] args){
		Person p=new Person();
		Person p1=new Person("wan");
		Person p2=new Person("tan",2);
	}
}

构造函数是在对象一建立就运行,给对象初始化;

一般方法是对象调用才执行,是给对象添加对象具备的功能

一个对象建立,构造函数只运行一次,一般方法可以调用多次


构造代码块

    给对象进行初始化

    对象一建立就运行,并且优先于构造函数执行

与构造函数区别

    构造代码块是对所有对象统一初始化

    构造函数是对相应对象初始化


class Person{
	private String name;
	private int age;
	{			//构造代码块
	System.out.println("Cry...........");
	}
	Person(){
		System.out.println("A:name="+name+"__age="+age);
	}
	Person(String n){
		name=n;
		System.out.println("B:name="+name+"__age="+age);
	}
	Person(String n,int a){
		name=n;
		age=a;
		System.out.println("C:name="+name+"__age="+age);
	}
}

class Person1Demo{
	public static void main(String[] args){
		Person p=new Person();
		Person p1=new Person("wan");
		Person p2=new Person("tan",2);
	}
}

 

© 著作权归作者所有

Almon
粉丝 2
博文 74
码字总数 51103
作品 0
江北
私信 提问
《Programming in Scala》读书笔记

不得不感叹一下,这本书真的是神作,不愧是Scala语言作者自己写的书。整个书的内容条理非常清晰,对于有些地方的设计也给出了具体的原因,能让你对整个语言有更好的把握。深入学习Scala必读书...

mj4738
2012/01/03
0
0
一份关于 Java、Kotlin 与 Android 的学习笔记

JavaKotlinAndroidLearn 这是一份关于 Java 、Kotlin 、Android 的学习笔记,既包含对基础知识点的介绍,也包含对一些重要知识点的源码解析,笔记的大纲如下所示: Java 重拾Java(0)-基础知...

叶应是叶
2018/08/08
0
0
Java基础笔记 -------------面向对象上(三大特性)

面向对象三个特性:继承(Inheritence)、封装(Encapsulation)、多态(Polymorphism). 1、封装(Encapsulation): 类包含了数据与方法,将数据与方法放在一个类中就构成了封装(一般来说,...

查封炉台
2014/04/21
0
0
day14_DBUtils学习笔记

一、DBUtils介绍 Apache公司开发的框架。   DBUtils是java编程中的数据库操作实用工具,小巧简单实用。   DBUtils封装了对JDBC的操作,简化了JDBC操作。可以少写代码。 commons-dbutils 是...

黑泽明军
2018/05/20
0
0
115个Java面试题及回答

解释下可用的线程状态. 在执行期间, 线程会处于以下状态中的一种: Runnable: 线程已准备就绪, 但没有立即运行. Running: 处理器正在执行的线程代码. Waiting: 处于阻塞状态的线程, 等待外部某...

Yamazaki
2014/04/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

ES 集群上,业务单点如何优化升级?

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! ES 基础 ES 集群 ES 集群上业务优化 一、ES 基础 ES 的安装下载,网上一大片,我这...

泥瓦匠BYSocket
10分钟前
0
0
input accept属性限制文件上传格式

上传文件的类型;具体做法如下所示: 注意:accept属性可以限制上传格式,其有兼容性如下 《1》上传.csv格式的 <input text="file" accept=".csv" /> 《2》上传.xls格式 <input text="file"......

Jack088
17分钟前
1
0
阿里开发者招聘节 | 面试题01:如何实现一个高效的单向链表逆序输出?

面试,如同玩一场饥饿游戏:既要对环境了然于胸,又要对自身心知肚明。发现一个好工作不容易,但成功应聘又会面临一系列的挑战。 为帮助开发者们提升面试技能、有机会入职阿里,云栖社区特别...

阿里云云栖社区
28分钟前
2
0
使用scp命令在多个Linux系统间进行文件复制

一,什么是scp scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。scp命令可以在linux服务器之间复制文件和目录.scp使用ssh安全协议传输数据,具有和ssh一样的验证机制,从而安全的远...

老孟的Linux私房菜
29分钟前
0
0
CentOS7中ESL服务部署记录

在CentOS7上部署价签系统,需要安装Mysql,Redis,emqtt,jdk。 1)Mysql,参考 2)Redis,参考 3)emqtt,参考 4)jdk,参考 在jdk的下载地址中,下载rpm文件,通过ftp上传到虚拟机后,通过...

莫在全
32分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部