java基础-面向对象

来源:互联网 发布:淘宝 淘口令 api申请 编辑:程序博客网 时间:2024/05/01 23:21


        众所周知,java是一门面向对象的语言!其实说到面向对象的概念,是相对于面向过程的语言来说的!举个简单例子:假如一个人要过桥,如果是面向过程的话只关心过桥,其它的不管,而是面向对象的话不仅要关心人(对象)、桥(对象),还要关心过桥(过桥是过程)。然而,在比较的过程中,两者的关心对象也是不一样的,:面过程成关心算法,面向对象关心的是数据!面向对象的三大特征:封装、继承和多态!

        “==”运算符与equals()方法的区别:

        “==”:是比较引用数据类型变量的值是否相等;

        equals():是用于比较两个引用变量所指向的对象的值是否相等;

       就一下面这里的一段代码来说:

String str1= new String("abc");

String str2= new String("abc");
String str3=str1;
if(str1==(str2))
System.out.println("true");
else
System.out.println("false");

        其输出结果:false;但是如果把str1==(str2)改成str1==(str3),就会输出true;

        这是因为“==”比较的是栈内存里面的引用变量的值;str1和str2在栈内存里面所指的不是一样自然就不能话等号了;

        但是,equals就不一样了,它所比较的就是两个对象中的内容是否相等;用一个简单的说法就是,有两个双胞胎兄弟,虽然他们的长相是一模一样,但是长得再怎么相像毕竟不是同一个人!所以,equlas可以理解为比较人的长相相似度,而“==”则是比较是否是所有都相等,是不是同一个人的问题!

        由于自己在以往的学习中没有搞清楚这种问题,所以,在搞清楚之后有些兴奋!哈哈!

        封装;以前对于我来说是一个比较难以理解的问题;以前的老师告诉我是为了安全、条理清晰、方便使用使得代码不会太复杂;总之,是一些稀里糊涂的概念让人觉得头晕的很啊!偶尔看到一个非常特别的形容:封装简单的说就是让你看到一个衣着华丽的女人,而看不到她丑陋的灵魂!

        对于this的用法自己以前是自己有些模糊的,但是在提问之后呢就觉得豁然开朗了!经过,自己查阅资料看到一篇博客,将用法规划的我觉得挺好,所以在这里转载部分内容:

        1. this是指当前对象自己。
当在一个类中要明确指出使用对象自己的的变量或函数时就应该加上this引用。
        2. 把this作为参数传递
当你要把自己作为参数传递给别的对象时,也可以用this。
        3. 注意匿名类和内部类中的中的this。
有时候,我们会用到一些内部类和匿名类。当在匿名类中用this时,这个this则指的是匿名类或内部类本身。这时如果我们要使用外部类的方法和变量的话,则应该加上外部类的类名。(详细内容请阅:http://blog.sina.com.cn/s/blog_71f6c1980100wtj4.html)

        继承:可以很好的实现代码重写的问题,再利用已有的类构造新类时,心累保留已有类的属性和行为,并可以根据要求添加新的属性和行为。举一个简单的例子,儿子继承父亲的部分基因的表现,所以,父子在有些方面的表现是有所一样的。但是,儿子有些方面的特点却是父亲没有的;这样就是简单的继承了。

       不过继承只是代码重写的一种方式,滥用继承会造成很严重的后果。只有当需要向新类添加新的操作,并且把已存在类的默默认为行为融合进新类中时,在需要继承已存在的类。

        多态:在实际的操作过程中,不同的对象具有相同的轮廓或形态,但具体执行过程却大相径庭。比如说:驾驶员在开车的时候都知道“遇到红灯时要刹车”,这与驾驶员是什么型号的车无关,所有的车都具有相同的轮廓或形态的刹车。



原创粉丝点击