在上一节里给大家留了一个算法,不知大家做得怎样了,现在给出这个算法的参考程序代码。
public class sum1_5
{
/**
* @param args
*/
public static void main(string[] args)
{
system.out.println(sum(100));
}
public static int sum(int x)
{
int msum=0;
if(x%2==1)
{
msum=(1+x)*x/2+(1+x)/2+1;
}
else
{
msum=(1+x)*x/2;
}
return msum;
}
}
这是我们优化以后的算法,由于算法很简单,所以这里就不再详细地去解读了。
接下来,我们学习一个新的内容,内部类。顾名思义,内部类就是包含在一个类里面的类了,包含内部类的类称为这个类的外部类或者父类。
内部类作为外部类的一个成员,应该拥有类成员的一般性质,我们可以将内部类设置权限为public,private或者protected,当然,不同的权限就对应不同的操作了,这跟其它类成员类似,这里就不多讲了。
我们要注意的一个问题是,既然我们可以在一个普通类里申明一个static成员,那么我们能否在一个内部类里也申明一个static成员呢?我们来写个这样的程序验证一下:
public class innerclass2_1
{
/**
* @param args
*/
public static void main(string[] args)
{
class a
{
public static int x;
public a()
{
x=0;
}
}
}
}
我们会发现,编译器会报错,错误信息为:the field x cannot be declared static; static fields can only be declared in static or top level types,也就是说,x不能够被申明为静态类型,静态类型只能够被定义在静态成员或者顶层成员内。有的同学会问,如果将内部类也加一个权限修饰符static,是否可以在内部类里定义static类型的数据了呢?答案也是否定的。因为内部类不能够被申明为static类型,我们知道被申明为static类型的成员实际上已经不属于这个类了,那么如果我们将内部类也申明为static类型,也就是说,内部类也不属于这个类了,这跟内部类的定义相悖。
另外,内部类既可以定义在一个普通类里,也可以定义在一个普通类的方法里。
所以,我们不能在内部类里定义static成员,同时也不能将内部类定义为外部类的static成员。下面给出上面经修改后的程序,仔细体会一下内部类的功能与特征。
public class innerclass2_1
{
/**
* @param args
*/
public static void main(string[] args)
{
class a
{
public a()
{
system.out.println("i am the constructor of the inner class");
}
}
new a();
system.out.println("i am the main class");
}
}
运行结果为:
i am the constructor of the inner class
i am the main class
另外一种写法也可以得到同样的结果:
public class innerclass2_1
{
/**
* @param args
*/
public static void main(string[] args)
{
new a();
system.out.println("i am the main class");
}
static public class a
{
public a()
{
system.out.println("i am the constructor of the inner class");
}
}
}
在这种写法中需要注意的是,我们讲过,一个静态方法只能访问静态成员,因main()方法是一个静态方法,所以在访问类a的时候,a必须要申明为静态类。
内部类是一个比较重要的概念,但实际项目中运用得比较少,但作为学习java的同学,掌握内部类的使用方法和相关特征是有必要的,在中级篇里讲多线程时会继续用到内部类的概念,因此,望广大学者务必下去多了解一下内部类。
在这节的最后留下一个题目,题目内容是:请新建一个主类,在主类的main()方法里定义一个子类,命名为a,创建一个子类b作为主类的一个成员。在main()方法中,分别对a和b进行访问。
======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/