java中的构造方法
2016-02-11 23:01
519 查看
java中的构造方法
java中所有的类都有构造方法,用来对该类的对象进行初始化。构造方法共有四种访问权限:
- public:任何类都能创建这个类的实例。
- protected:只有该类的子类以及与该类在同一个包中的类可以创建该类的对象。
- private:其他类不可以将该类实例化。
- default或package:只有与该类在同一个包中的类可以实例化该类。
注意:
- 构造方法必须与该类同名。
- 构造方法不能有返回值。
- 用户不能直接调用构造方法,必须通过关键字new自动调用它。
- 在类的定义中可以不定义构造方法,而其他类仍然可以通过new来实例化该类的对象,这就是java中默认的构造方法。此时系统会用默认值来初始化对象的成员变量。数值型默认为0,boolean默认为false,char默认为’\0’,对象默认为null。
- 一旦在类中定义了构造方法,则不执行默认的构造方法。
体会下面两个例子:
public class DefaultDemo { public int i; public char c; public boolean b; public DefaultDemo() { } public static void main(String[] args) { DefaultDemo d = new DefaultDemo(); System.out.println("默认的数值型为" + d.i); System.out.println("默认的char为" + d.c); System.out.println("默认的boolean为" + d.b); } } /* * 默认的数值型为0 默认的char为 默认的boolean为false */
class Dog { // 定义weight属性的访问控制为private,使得外界不能改变weight值 private int weight; // 创建构造方法,初始化该类的对象 public Dog() { weight = 42; } public int getWeight() { return weight; } // 这个函数让外界改变weight的值 public void setWeight(int newWeight) { weight = newWeight; } } public class UseDog { public static void main(String[] args) { Dog d1 = new Dog(); System.out.println("the dog1's weight is " + d1.getWeight()); Dog d2 = new Dog(); d2.setWeight(2); System.out.println("the dog2's weight is " + d2.getWeight()); } }
构造方法也可以重载,重载构造方法的目的是使该类的对象具有不同的初始值,为类对象的初始化提供方便。
在下面这个例子体会构造方法重载:
class Employee { private String name; private int salary; public Employee(String n, int s) { this.name = n; // 也可以不用this this.salary = s; } public Employee(String n) { this(n,0); } public Employee() { this("Unknown"); } public String getName() { return name; } public int getSalary() { return salary; } } public class EmployeeTest { public static void main(String[] args) { Employee e = new Employee(); System.out.println("Name: " + e.getName() + " Salary: " + e.getSalary()); } } /* * Name: Unknown Salary: 0 */
相关文章推荐
- java中的this
- java常见问题
- Java—设计模式(工厂模式)
- 栈的应用--四则运算表达式求值(java代码)
- JAVA比较两个日期相差的天数
- Arcgis server java develop begining
- Gradle教程Part2:java工程
- Java开发环境搭建
- java基础总结 --- enum枚举实现多路分发 石头、剪刀、布游戏示例
- The Java™ Tutorials — Concurrency :Memory Consistency Errors 内存一致性错误
- Spark学习笔记7-在eclipse里用scala编写spark程序(单机和集群运行)
- JDK中自带xml和对象互转方法
- 蓝桥杯 算法训练 最小乘积(基本型)
- JAVA常见基本术语
- java synchronized详解(转载)
- Java多线程ExecutorService.shutdown什么时候执行
- 总结-Java何时需要使用多线程
- 20个非常有用的Java程序片段
- 蓝桥杯 算法训练 图形显示
- [Spring实战系列](16)面向切面编程(AOP)概述