类的修饰符:
java中总公共有:public、private、protected访问修饰符。
1:任何类和对象都可以访问类的方法和域--public。
2:只对本类可见---private。
3:对本类以及所有子类可见--protected。
一:默认情况下,java给类提供了一个无参数的构造器,如果类本身我们自己构造了一个构造器之后,如果不是无参数的构造器的时候,在new构建对象的时候,需要传递参数。如果继续使用无参数构造器会报错。
也就是说当且仅当类没有提供任何构造器的时候,系统才会提供一个无参数构造器。
1 public class init_java { 2 public static void main(String[] args){ 3 Employee employee=new Employee("tom",22,23000); 4 System.out.println(employee.getSalary()); 5 } 6 7 8 } 9 10 11 class Employee{ 12 private int age; 13 private String name; 14 private double salary; 15 public Employee(String aname,int aage,double asalary){ 16 this.age=aage; 17 this.salary=asalary; 18 this.name=aname; 19 } 20 public String getName(){ 21 System.out.println(this.name); 22 return this.name; 23 } 24 public double getSalary(){ 25 return this.salary; 26 }; 27 }
我们自定义构造器的时候,在new创建对象的时候,就需要传入参数。
构造器中调用另一个构造器:
1 public class init_java { 2 public static void main(String[] args){ 3 Employee employee=new Employee("tom",22,23000); 4 System.out.println(employee.getSalary()); 5 System.out.println(employee.getAlaname()); 6 } 7 8 9 } 10 11 12 class Employee{ 13 private int age; 14 private String name; 15 private double salary; 16 private String alaname; 17 public Employee(String aname,int aage,double asalary){ 18 this("evil"); 19 this.age=aage; 20 this.salary=asalary; 21 this.name=aname; 22 } 23 public Employee(String aname){ 24 this.alaname=aname; 25 } 26 public String getName(){ 27 System.out.println(this.name); 28 return this.name; 29 } 30 public double getSalary(){ 31 return this.salary; 32 }; 33 public String getAlaname(){ 34 return this.alaname; 35 } 36 }
this只能在构造器的第一行且只能在第一行。
this后面用括号括起来,并写入参数。
构造器中,需要注意的是,没有返回值,void 只是表示返回值是空而不是没有返回值!!
构造器的作用是给对象初始化状态值,建议在构建类的时候,自己写构造器,初始化对象的“状态”。
类的设计技巧:
1:一定要保证对象数据私有化。
一定要保证对象的数据的封装性。不能破坏数据的封装性。保证对象的实例域是私有的,可以通过更改器或者访问器进行对象状态的访问和修改。
2:一定要对数据进行初始化。
java不对局部变量进行初始化,但是会对对象的实例域进行初始化。所以我们在写类的时候,最好我们自己写构造器给对象进行初始化。最好不要依赖系统给我们的初始化。而是显示的初始化实例域。
3:不要过多的在类中使用基本数据类型。
言外之意,就是在表述一个对象的时候,我们最好不要用一堆基础数据来表示对象的状态,而是用一个类来概括一个对象。
比如表示地址的类,可以用Address类来代替一堆基本数据(private String city private String province ..........)
4:并不是所有的实例域都需要独立访问器和更改器。
比如上几次博客中的employee类,中员工的姓名,性别等就不需要更改器。也不是所有的域也需要访问器。
5:将功能复杂的类,划分几个类。
并不是说,你类中写15个方法,就必须划分成3个类 每个类5个方法。而是根据实际情况,进行划分,便于维护和修改。
6:类的名字和方法的名字能体现其功能。
命名的方式,也让其他人看键参数知其含义。而不是定义一些简单的字母:a、b、c。