关于Java机制的随笔
因为自己现在的工作主要用的是VB,因此在工作之余我拿起了在学校带来的一本Java书,这本书是化志章老师写的,书名是《Java程序设计——从方法学角度描述》。当时上课的时候就觉得这本书很好,现在再度一遍的时候对有些东西更能理解了,在这里与大家分享一下。
1.为什么类的对象不能类中的private成员?
这个问题是我曾经非常想不通的问题,一个类的对象是用这个类造出来的,那这个类的所有成员应该也都包含在这个类的对象中,为什么这个类的对象不能用呢?现在我终于理解了。要理解这个问题,你首先要站对角度,你要站在一个类的设计者角度来看这个问题,你设计这个类,然后被人用你设计出来的这个类去实例化,去创建这个类的对象,那你就有权决定让使用者看到这个类的哪些东西,比如你可以让他看到public成员,他不能看到private成员,但是这个成员确实是存在在这个对象之中,而对象的使用者却看不到。打个比方,别人设计了一台电视机,这台电视机上默认就只有音量加音量键两个键,这可以认为是电视机的public成员,但是电视机肯定要有频道加频道减的功能,但是这是电视机的private成员,它不想让你看见,所以你即使拥有这台电视机你还是不能实现频道加频道减,但是在电视机的内部它是存在的,而使用电视机的人却不能使用。所以,在设计一个类的时候,你要充分考虑这个类中成员的权限问题,用哪种修饰符,这决定了你设计出来的类是一个怎样的类。好的设计应该是向外部提供适当的方法去完成足够的功能,让使用者并不需要去关心类的内部怎么实现该功能,只要调用该类提供的方法即可简单地完成自己想做的事情。
2.Java中的main方法为什么要加static关键字?
我们写Java程序的时候,写main方法一般是这么写的public static void main(String[] args),那你有没有想过main方法前面为什么要加static?我们都知道,在一个类中被static修饰的方法成为静态方法,静态方法是默认对象不存在的,就是说就算该类没有创建对象,该方法也是可用的,也就是说可以直接通过该类的类名直接引用该方法。那我们的Java程序一般都是从main方法开始执行,如果main方法不是静态方法,那就必须创建一个包含main方法类的对象来调用main方法,但这个对象在哪里创建呢?我们的main方法都还没有执行?因此回到了先有鸡还是先有蛋的问题,所以必须把main方法声明称静态方法,这样就可以让系统在不创建类对象的情况下直接饮用main方法,这也很符合逻辑,就算如果系统会自动创建对象然后去饮用不是静态方法的main方法,虽然效果是一样的,但是在大的逻辑上是说不过去的。
以上两个问题仅仅是我个人的看法,仅供大家参考,如果有说错的地方,真诚希望大家批评指正。
转载于:https://blog.51cto.com/gogofun/879170