先看下面的程序:
Class Parent
{
public int x;
......
}
Class Child:Parent
{
public int y;
......
}
如果采用这样的类的实例化方法: Parent a=New Child()对于程序来说a只是Parent类的一个对象,虽然它是用Child类来实例化的,所以a.y的调用方法会报错,解决方法就是:Child b=(Child)a 这样就可以利用类型转化把a赋给一个Child对象的引用b,再用b.y就没有问题了。其他诸如继承中讲到的基本的问题就不说了。
如果将程序中类Child的字段y的修饰符变为private,上面的调用就会出错了,因为对于private来说是只允许类中的调用的。所以在这里引入一个解决方法,属性。程序如下:
Class Parent
{
public int x;
......
}
Class Child:Parent
{
private int y;
public int Y
{
get{return this.y;}
set
{
this.y=value;
}
}
......
}
get、set、value在这里都是关键字,再次声明类的对象以后,例如:
Child c=New Child();
c.Y=100;(这里就等于将100付给了Child中的小y)
这样就可以实现外部对类内部成员变量的调用,使用属性的最大的好处并不是这里,它可以在其中加入方法,或者可以说它本身就是一个方法,这个方法是对内部变量的任意操作,结合方法可以收到很多意想不到的效果。
最后再将一下override & overload 这两个概念,前者是复写,存在于父类和子类之间,是对父类中原有方法的改写(父类中只有虚方法和抽象方法可以被override);后者是重载,是同一个类中的同名不同参数方法的概念。