在以后进行项目的开发与设计的过程之中,简单Java类都将成为一个重要的组成部分存在,慢慢接触到正规的项目设计以后,简单Java类无处不在,并且有可能产生一系列的变化,
所谓的简单Java类指的是可以描述某一类信息的程序类,例如,描述一个人,描述一本书,描述一个部门,描述一个雇员,在这个类之中并没有特别复杂的逻辑操作,只作为一种信息存储的媒介所在
对于简单Java类而言,其核心的开发结构如下:
- 类名称一定要有意义,可以明确的描述某一类事物
- 类之中的所有属性都必须使用private进行封装,同时封装后的属性必须提供有setter、getter放法;
- 类之中可以提供有无数个构造方法,但是必须要保留无参构造方法
- 类之中不允许出现任何的输出语句,所有内容的获取必须返回。
- 【可以提供有一个获取对象详细信息的方法,暂时将此方法名称定义为getInfo()
定义一个简单Java类:
class Dept{//类名称可以明确描述出某类事物
private long deptno;
private String dname;
private String loc;
public Dept(){}//必须提供有无参
public Dept(long deptno,String danme,String loc){
this.deptno = deptno;
this.dname = dname;
this.loc = loc;
}
public String getInfo(){
return"【部门信息】部门编号:"+this.deptno+"、部门名称"+this.dname+"、部门位置:"+this.loc;
}
public void setDeptno(long deptno){
this.deptno = deptno;
}
public void setDname(String dname){
this.dname = danme;
}
public void setLoc(Stirng loc){
this.loc = loc;
}
public long getDeptno(){
return this.deptno;
}
public String getDname(){
return this.dname;
}
public String getLoc(){
return this.loc;
}
}
public class JavaDemo{
public static void main(String [] args){
Dept dept = new Dept(10,"技术部","北京");
System.out.println(dept.getInfo());
}
}
这种简单Java类基本上融合了所有的现在接触到的概念,例如:数据类型划分,类的定义,private封装、构造方法、方法定义、对象实例化
static关键字static是一个关键字,这个关键字主要可以用来定义属性和方法。下面将对static的使用进行分析:
用static定义属性:
在一个类之中,所有的属性一旦定义了实际上内容都交由各自的堆内存空间进行保存。
定义一个程序类:观察传统问题
class Person{
private String name;
private int age;
String country = "中华民国";//国家,暂时不封装
public Person(String name,int age){
this.name = name;
this.age = age;
}
//setter,getter略
}
public String getInfo(){
return "姓名:"+ this.name +"、年龄:" +this.age + "、国家:"+ this.country;
}
}
public class JavaDemo{
public static void main(String [] args){
person perA = new Person("张三",10);
person perB = new Person("李四",10);
person perC = new Person("王五",10);
personA.country = "中华人民共和国";
System.out.println(perA.getInfo());
System.out.println(perB.getInfo());
System.out.println(perC.getInfo());
}
}
为了更好的观察出程序的问题,下面对此操作做一个内存的分析:
在正常的开发过程中,每一个对象要保存各自的属性,所以此时的程序没有任何问题,但是如果突然有一天,国家解放了,变成了中华人民共和国,而且有五千万个对象,那么此时面对你的将是一场噩梦!因为每一个对象都有一个属于自己的country属性。所以这时发现,整体设计上就出现了问题。
这个时候最好的方案就是将country修改为公共属性,这种情况下就必须使用static进行标注:
class Person{
private String name;
private int age;
static String country = "中华民国";//国家,暂时不封装
public Person(String name,int age){
this.name = name;
this.age = age;
}
//setter,getter略
}
public String getInfo(){
return "姓名:"+ this.name +"、年龄:" +this.age + "、国家:"+ this.country;
}
}
public class JavaDemo{
public static void main(String [] args){
person perA = new Person("张三",10);
person perB = new Person("李四",10);
person perC = new Person("王五",10);
Person.country = "中华人民共和国";
System.out.println(perA.getInfo());
System.out.println(perB.getInfo());
System.out.println(perC.getInfo());
}
}
此时会发现所有对象中的country属性的内容都发生了改变,所以这时一个公共属性。
但是对于static属性的访问需要注意一点,由于其本身是一个公共的属性,虽然可以通过对象去访问,但是最好的方法应该是通过所有对象的最高代表(类)来进行访问。所以static属性可以由类名称直接调用!
static属性虽然定义在类之中,但是其并不受到类实例化对象的控制,static属性可以在没有实例化对象的时候使用。
class Person{
private String name;
private int age;
static String country = "中华民国";//国家,暂时不封装
public Person(String name,int age){
this.name = name;
this.age = age;
}
//setter,getter略
}
public String getInfo(){
return "姓名:"+ this.name +"、年龄:" +this.age + "、国家:"+ this.country;
}
}
public class JavaDemo{
public static void main(String [] args){
System.out.println(Person.country);
Person.country = "中华人民共和国";
Person perA = new Person("张三",10);
System.out.println(per.getInfo());
}
}
在以后进行类设计的时候首选的一定是非static属性,而考虑到公共信息储存的时候才会使用static属性,95%考虑非static属性,5%考虑static属性,非static属性必须在实例化对象产生之后才能使用,而static属性可以在没有实例化对象产生的情况下直接通过类名称进行调用。



