Java内省初探——字段与属性

今天第一次解除Java内省机制,虽然没有什么即为深入的了解,但经过初步的学习后我将Java内省机制初步理解为对于Java代码的一种规范化管理机制。

下面一个具体代码作为实例进行解释:

//javaBeans练习,
public class Person {
 private String name;//字段(此时该字段还不能够称之为属性)
 private int age;//字段(此时该字段还不能够称之为属性)
 private String password;//字段(此时该字段还不能够称之为属性)
 
 public String getA(){
  return null;
 }
 
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 public String getPassword() {
  return password;
 }
 public void setPassword(String password) {
  this.password = password;
 }
 
}
上述代码中,Person这个类有着三个私有字段,name,age和password。有很多人都会说这三个玩意儿是属性,其实不然。一个字段只有在对它设了getXXX()或setXXX()方法之后才能够称之为属性,而像上述代码中的getA()方法,虽然并没有声明出其私有字段A,但A确实是Person的一个属性。

那么,像上述类中,到底有几个属性呢??是三个,四个,七个??都不是,其实在Person类中有五个属性,大家一定会奇怪了,Person类明明只有三个字段呀,就算按照我刚才说的只要有get或set方法的就是一个属性,那最多也就四个属性呀,我这第五个属性是从那里蹦出来的呢??

俗话说:事实是检验真理的唯一标准,让我们看一下测试后的结果吧!

看看,上面的运行结果是不是有五个属性?大家一定会莫名奇妙了,为什么会莫名其妙多出了一个class属性出来呢??其实,大家都忽略了一个很重要也很基础的知识点,Java中Object类是所有类的父类,所有类都继承了Object的方法和字段。在Object类中,有一个getClass的方法,刚才说了,只要有get方法的字段就是属性,那么class自然也是属性了。

所以说,在Person类中除了它自己的属性之外,还继承了它父亲的属性class,共有五个属性。

猜你喜欢

转载自blog.csdn.net/u010651383/article/details/9673033