面向对象之构造函数以及静态变量(未完成)
2016-06-19 09:32
441 查看
作用
区别与一般函数,专门用于对象的初始化。new格式
1.函数名与类名相同;2.没有返回值类型;
3.没有具体的返回值。
与一般函数的区别
1.构造函数在对象创建时被执行,而且只执行一次;2.一般在对象创建后,需要时才被调用,而且可以调用多次。
class Person { private int age; private String name; Person(String n,int a) //构造函数 { name = n; age = a; } public void setName(String n) { name = n; } public String getName() { return name; } public void setAge(int a) { age = a; } public int getAge() { return age; } public void show() { System.out.println("name=" + name + "\t" + "age=" + age); } } class PersonFunc { public static void main(String[] args) { Person p = new Person("skq",20); Person p1 = new Person("孙悟空",10); p.show(); p1.show(); } }
执行过程
注意
1.多构造函数在类中可以重载出现Person();
Person(String name);
Person(String name,int age);
2.定义的每一个类中都有一个默认的空构造函数;
3. 一旦类中自定义了构造函数,默认的空构造函数就没有了;
上例中若在创建一个对象
Person p = new Person();或者
Person p1 = new Person(“ddd”);
都会提示找不着构造器,除非在Person类中再定义构造函数;
4.构造函数中有隐藏的return语句,用于结束构造函数并返回;
5.类中可以出现void Person()定义的函数,但该函数为一般函数不可以作为构造函数使用,而且也不符合函数名首字母小写第二个单词首字母大写的习惯。
私有化
构造函数也可以加private修饰私有化,只在本类中有效。注意1:构造函数只能被构造函数调用,不能被一般函数直接调用;
访问私有化的构造函数
访问私有化的构造函数,通过this关键字。
1.this:代表的是对象,哪个对象调用this所在函数,this就代表哪一个对象;
2.this带上参数列表的方式就可以访问本类中的其他构造函数;
例如:this(“g”);就可以访问本类中带一个参数的构造函数;
3.用于调用构造函数的this语句必须放在构造函数的第一行,因为初始化动作要先执行;
private Person(String n) { name = n; } Person(String n,int a) //构造函数 { this(n);//可以访问private Person(String n) age = a; }
凡是访问了对象中数据的方法都持有this!!!
当成员变量和局部变量重名时。可以通过this来区分;
class Person { private int age; private String name; private Person(String n) { name = n; } Person(String name,int age) //构造函数 { name = name; age = age; } public void show() { System.out.println("name=" + name + "\t" + "age=" + age); } } class ThisDemo { public static void main(String[] args) { Person p = new Person("skq",20); p.show(); } }
输出结果为name=null age=0
因为
Person(String name,int age) //构造函数 { name = name; age = age; }这里的name只是局部变量之间自己在赋值
成员变量name确实等于skq,但没有赋值给p.name
this.name = name;才能输出想要的结果。
##this小应用
比较两个人的年龄
class Person { private int age; private String name; private Person(String n) { name = n; } Person(String name,int age) { this.name = name; this.age = age; } public boolean compareAge(Person pp) { return pp.age == this.age; } } class ThisDemo { public static void main(String[] args) { Person p = new Person("skq",20); Person p1 = new Person("孙悟空",20); boolean b = p.compareAge(p1); if(b) System.out.println("年龄相同"); else System.out.println("年龄不同"); } }
静态方法 静态变量 静态代码块 构造代码块 局部代码块
作用是什么?什么时候用?
相关文章推荐
- Mootools 1.2教程 函数
- autoit InputBox 函数
- 文件遍历排序函数
- 关于C#中排序函数的总结
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
- Lua编程示例(二):面向对象、metatable对表进行扩展
- ASP下经常用的字符串等函数参考资料
- PostgreSQL教程(五):函数和操作符详解(1)
- C#中面向对象编程机制之多态学习笔记
- DOS批处理 函数定义与用法
- asp Chr 函数 数字转字母的方法
- Lua中的函数精讲笔记
- 浅谈Lua的面向对象特性
- Lua中的闭合函数、非全局函数与函数的尾调用详解
- Lua中调用C++函数示例
- Lua面向对象之类和继承浅析
- Lua实现split函数
- Lua常用时间函数使用实例
- Lua函数与字符串处理简明总结
- Lua学习笔记之表和函数