JAVA笔记之private、构造函数、this
2015-08-31 23:10
537 查看
* private:私有,权限修饰符;用于修饰类中的成员(成员变量,成员函数)。 *将age私有化以后,类以外不能直接访问 *所以得在类中提供访问age的方式 *注意:私有仅仅是封装的一种表现形式 *之所以对外提供访问方式,就因为可以在访问方式中加入逻辑判断等语句。 *对访问的数据进行操作,提高代码的健壮性。 */ package PersonDemo; class Person { private int age; //权限 返回值 函数名(){} public void setAge(int a){ if(a>0 && a<130) { age=a; speak(); } else { System.out.println("Error Data"); } } public int getAge() { return age; } void speak(){ System.out.println("age" + age); } } public class MyDemo { public static void main(String[] args) { Person p = new Person(); p.setAge(-20); //p.speak(); } }
/* * 构造函数对象一建立就会调用与之对应的构造函数 * 作用:可以给对象进行初始化 * *小细节: *当一个类中没有定义构造函数时,那么系统就会默认给该类加入一个空参数的构造函数。 *当在类中自定义了构造函数,系统将不再构造。 * *构造函数和一般函数在写法上不同。 *在运行上也有不同 *构造函数实在对象一建立就运行,给对象初始化。 *而一般方法是对象调用才执行,给是对象添加对象具备的功能 * *一般对象建立,构造函数只运行一次。 *而一般方法可以杯该对象调用多次 * *什么时候定义构造函数? *当分析事物是,该事务存在具备一些特性或者行为,那么将这些定义内容定义在构造函数 */ package PersonDemo2; class Person{ private String name; private int age; /* * 构造代码块 * 作用:给对象进行初始化 * 对象一建立就运行,而且优先于构造函数运行 * 和构造函数的区别: * 是给所有对象进行统一初始化 * 构造函数是给对应的对象初始化 * */ { //System.out.println("Person code run"); cry(); } Person() { System.out.println("A:name=" + name + ",age=" + age); //cry(); } Person(String n) { name =n; System.out.println("B:name=" + name + ",age=" + age); //cry(); } Person(String n, int a) { name = n; age = a; System.out.println("C:name=" + name + ",age=" + age); //cry(); } public void setName(String n) { name = n; } public String getName() { return name; } public void cry(){ System.out.println("Cry"); } } public class PersonDemo2 { public static void main(String[] args) { Person p1 = new Person(); Person p2 = new Person("lisi"); p2.setName("libusi"); System.out.println(p2.getName()); //Person p2 = new Person("lisi"); //Person p3 = new Person("wangwu", 10); } }
/* * this:用于区分局部变量和成员变量同名的情况 * * this:代表哪一个? * this代表他所在函数所属对象的引用。 * 哪个对象在调用,this就代表哪个。 * * this应用:当定义类中功能是,该函数内部需要调用该函数的对象是,这是用this来表示这个对象 */ package PersonDemo3; class Person{ private String name; private int age; Person(int age) { this.age = age; } Person(String name) { this.name = name; } Person(String name, int age) { this.name = name; this.age = age; } public void speak() { System.out.println("name=" + this.name + ",age=" + this.age); this.show(); } public void show() { System.out.println(this.name); } /* * 需求:给人定义一个年龄是否相同的功能 */ public boolean compareAge(Person p) { return this.age==p.age; /*if(this.age = p.age) { return true; } else { return false; }*/ } } public class PersonDemo3 { public static void main(String[] args) { Person p1 = new Person(30); Person p2 = new Person(25); boolean b = p1.compareAge(p2); System.out.println(b); //Person p = new Person("lisi"); //Person p1 = new Person("zhangsan"); //p1.speak(); } }
package PersonDemo; /* * this语句:用于构造函数直接互相调用 * * 构造函数间调用要用this * * this语句只能定义在函数的 第一行 */ class Person { private String name; private int age; Person(String name) { this.name = name; } Person(String name, int age) { //this(); this(name); //this.name =name; p(name); this.age = age; } } public class PersonDemo { public static void main(String[] args) { Person p =new Person("lisi", 30); Person p1 =new Person("lisi2", 36); } }
相关文章推荐
- Java多线程之线程生命周期以及线程各个时期的状态
- java 8 JVM性能优化
- Struts的一些总结
- 【转】Java 集合系列目录(Category)
- web工程中实现spring框架工程详解
- java集合类操作优化经验总结
- Java中如何遍历Map对象的4种方法
- 利用myeclipse的反向工程来创建hbm映射文件
- Spring学习(八)spring整合struts2
- java中的volatile关键字
- [转]Java垃圾回收:GC在什么时候对什么做了什么
- Spring的ioc
- [转]Java垃圾回收:GC在什么时候对什么做了什么
- Java内存简介
- [笔记][Java7并发编程实战手册]4.7-4.8 在执行器中延迟执行或则周期执行任务ScheduledThreadPoolExecutor
- 【android】 eclipse导入sdk源码、javadoc(帮助文档)
- java.lang.IllegalStateException: Missing project All-Projects
- 菜鸟好文推荐(十五)——9个基于Java的搜索引擎框架
- 菜鸟好文推荐(十四)——Java 常见异常及趣味解释
- struts.xml中的标签及属性详解