结束C语言的学习后,由面向过程到面向对象编程的转变,不知道是不是都有点不太适应,如果没有的话,我应该就是属于那类的少数人群,这阵子零散的学习,并没有在Java里收获足够的东西。说起对Java最初认识因为GUI界面的魔幻(当然这只是我最最之前的认识,那时候还是一个计算机相关之外的人)。再然后就是面向对象了,那么我写下这篇博客记录一下自己的认识。起初是看了马士兵老师的视频,他有一段关于面向对象与面向过程的比较的描述,第一种描述:“一个人去新疆,他要先找到一辆车,然后上车,加油门,路过A,路过B,最后到达新疆”。第二种描述:“一个人开着车到了新疆” 。第一种描述是用面向过程的实现,而第二种的描述就是面向实现的实现(这两种描述是我依据印象写下的,更详细具体的描述请查看尚学堂马士兵老师的网课)。当时我听后真的有感觉,面向对象也许这正是我们需要的最合理的处理问题的方式。
也许你已经知道了,使用“new 类名()”这样的格式可以创建一个对象,那么,在使用了“new 类名()”这样一句话后我们的程序究竟干了什么?
package test1; public class T1 { T1(){ System.out.println("召唤我干啥???!!!"); } void say(){ System.out.println("hello ,i'm coming!"); } }
package test1; public class T1test { public static void main(String[] args){ T1 a=new T1(); a.say(); } }
这是一个包里的项目,想必,你也一定猜出了运行结果吧
没错!
召唤我干啥???!!!
hello ,i'm coming!
不知道你是否感觉到一丝的奇妙之处,我在这里仅仅是调用了对象
T1 a=new T1();
居然在生成对象a的同时把T1类下的T1()方法给使用了...那么,我就在这里做下一个小小的总结吧。一个类下有一个与类同名的方法,在生成该类的对象并为其开辟空间时,会同时调用这个与类名同名的方法,而且当这个方法有形参时候,在生成对象时候也必须带上参数。(很多情况下,源码的类下并没有一个与类名同名的方法,但实际上系统还是会自己添加一个且没有形参,且在开辟空间时不做任何动作)
例如:
package test1; public class T1 { T1(int n){ System.out.println("是的"+n); } void say(){ System.out.println("hello ,i'm coming!"); } }
package test1; public class T1test { public static void main(String[] args){ T1 a=new T1(5); a.say(); } }
(补充: 当使用运算符new时,将创建给定类的实例(对象)、为它分配内存、调用给定类定义的一个特殊方法)