黑马程序员技术交流社区

标题: java的特性 [打印本页]

作者: 罗忠文    时间: 2012-11-25 15:43
标题: java的特性
java有哪些特性,并且写出代码
作者: 唐永康    时间: 2012-11-25 18:01
本帖最后由 唐永康 于 2012-11-25 18:05 编辑

/*
JAVA的三大特性:继承,封装和多态。
对于三大特性的理解,不同人的理解角度可能不一样,但殊途同归。
下面是我个人的理解。

*/

/*
封装理解:
  尽量说的简单一点,没有必要说的那么晦涩难懂。封装就是把
  一个繁杂细节包装起来,提供简单的外部应用给你使用。比如我想要一台电脑,只需要花钱买就是了,
至于电脑是怎么造出来的,电脑里面的结构是如何实现的和你没有关系
电脑有提供了和你交互的键盘啊,USB接口啊,鼠标啊,等等。这些简单的,你能够识别的,能够用的。
把内部的繁杂的细节给包装起来了,这就是现实生活中看得见摸得着的封装。比如:在现实生活中一个老板想干成一个项目,
只需要找懂这个项目的人就可以了,至于项目的细节,老板完全不必操心。老板只需要管好这个做项目的人就可以了。
在计算机程序中也是这么一个道理。下面写一段简单的代码来体现计算机程序的封装。

*/
//封装:
class FengZhuang
{

private int a;
//这里method方法使用了关键字private,就是把这个方法封装在
//这个类的内部,如果想使用这个方法的只需要这个调用就可以了。
//this.method或者newFengZhuang().method
//看看这样调用方法就简单多了,至少从书写角度上不必再把整个
//方法全部写完。这就是一个简单的封闭。
private void method()
{
  System.out.println("fengzhuang");
}
}

/*
继承理解:
  从字面上理解就能顾名思义,意思就是说把祖辈留下来的东西给继承了
当然有的时候可能因为各种原因没有完全继承,只是继承了一部分,这种情况也是有的。在JAVA中的继承和现实生活中的一样。
java是单继承的,意思是说一个子类只能有一个父类。比如:一个孩子只能有一个亲生父亲。
但有的人会说了,不对呀,在现实生活中除了亲生父亲之外还有很多类似于父亲这样的角色。比如干爹,义父,后爸,养父,监护人。。等等。
所以JAVA为了更好的反应生活的继承关系再引入了另一个东西,接口。一个子类可以实现(实际上就是继承)多个接口。
接口里面的方法没有方法体,只有一个方法名字。所以,你可以说JAVA是单继承的也可以说它是多继承的
子类除了子类除了继承父类的方法也可以有自己的方法,同时也可以覆盖父类的方法,生活中的例子也有,
比如:你父亲会喝酒,结果他的喝酒的基因遗传给你了,你也会喝酒,这就是继承。但不同的是你父亲只能喝半斤,
你能喝一斤,你升级了,比你父亲还能喝,这就叫覆盖。除此之外你父亲不会抽烟,但是你会抽烟,抽烟就是你自己的,这叫自己的方法。

下面写一段代码来反应继承的关系。
*/
class Fu
{
static void HeJiu()
{
  System.out.println("喝半斤酒");
}

}

class Zi extends Fu
{
//继承并且覆盖父类的喝酒的方法
static void HeJiu()
{
  System.out.println("喝一斤酒");
}
//自己的抽烟方法
void ChouYan()
{
  System.out.println("抽烟");
}
}

/*
多态理解:
  多态,从字面上理解,多种形态,说再简单一点就是父类的引用可以
指向子类的对象。多态是在继承的基础之上建立的,如果说没有继承就没法理解多态。
并且通过父类引用指向的对象可以调用子类里面的一些方法,前提是调用的方法必须是子类继承父类的方法,
如果调用子类自己的方法则失败。也就是说最终调用的还是父类里面的方法。在现实生活中也有这样的例子。
比如,分类,比如牛,马,猪都是动物对吧,你可以这样说,牛是一个动物,但反过来就不行了,动物是牛,这样显然是不对的。

*/

class Demo
{
public static void main(String[] args)
{
  Fu fu = new Zi();
  Fu.HeJiu();//父类里面有这个方法。
  Fu.ChouYan();//父类里面没有这个方法,所以失败。

}
}


作者: 罗忠文    时间: 2012-11-25 18:06
唐永康 发表于 2012-11-25 18:01
/*
JAVA的三大特性:继承,封装和多态。
对于三大特性的理解,不同人的理解角度可能不一样,但殊途同归。 ...

请问子类覆写父类中的一个方法,在子类中调用这个方法,是调用子类中方法还是调用父类中的方法
作者: 罗忠文    时间: 2012-11-25 18:08
唐永康 发表于 2012-11-25 18:01
/*
JAVA的三大特性:继承,封装和多态。
对于三大特性的理解,不同人的理解角度可能不一样,但殊途同归。 ...

多态不仅仅可以用继承来写,而起还可以用interface来实现
作者: 唐永康    时间: 2012-11-25 18:15
罗忠文 发表于 2012-11-25 18:06
请问子类覆写父类中的一个方法,在子类中调用这个方法,是调用子类中方法还是调用父类中的方法 ...

还是子类中的方法,记住了具体是调用子类的方法还是父类的方法看左边的引用。比如:Fu fu = new Zi();这个就应该是调用父的方法,如果是这样Zi zi = new Zi(); 就调用的是子类的方法。其实你可以实际写几个例子慢慢试验,那样的效果更容易记住,
作者: 唐永康    时间: 2012-11-25 18:19
罗忠文 发表于 2012-11-25 18:08
多态不仅仅可以用继承来写,而起还可以用interface来实现

我写那么多已经好难写了,你自己能理解最好,不用别人回答了。我在继承里面已经说过了,你是不是没有全部看完呀,全部看完如果还有什么不理解的再发问吧,我要把三大特性所有的细节全部写完,那得写到猴年马月去了。
作者: 罗忠文    时间: 2012-11-25 18:21
谢谢,太谢谢你了给你送分那




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2