public class Main
{
public static void main(String[] args)
{
// TODO: 给Person类增加一个静态字段count和静态方法getCount,统计实例的个数
Person p1 = new Person("小明");
System.out.println(Person.getCount()); // 1
Person p2 = new Person("小红");
System.out.println(Person.getCount()); // 2
Person p3 = new Person("小军");
System.out.println(Person.getCount()); // 3
System.out.println(p3.name); //注意!!!!!!!!!!!!!ok,打印小军。
}
}
public class Person
{
protected String name; //注意!!!!!!!!保护类型,试想和C++对比
public static int number;
public Person(String name)
{
this.name = name;
number++;
}
/*
* 加public表示全局类,该类可以import到任何类内 .不加public默认为保留类, 只能被同一个包内的其他类引用。
*/
static int getCount()
{
return number;
}
}
这里使用对象p3打印Person类保护变量的值,是可以成功访问的,也就是说Java在保护类机制上与C++不同,c++的保护类型是不能被对象访问的,但是Java在同一个包中却可以访问。
但是在不同包却不行!!
示例如下:
从上面可以看到,不同包时对象调用保护变量报错。