Java之美[从菜鸟到高手演变]之类与对象(一)(三)

2014-11-24 10:51:07 · 作者: · 浏览: 2
存在的关系)中,子类重写父类的方法,方法名相同,参数也相同的一种机制。
[java]
public class B extends A {
public String a(String name) {
return "welcome to you :" + name;
}
}
class A {
public String a(String name){
return "hello:"+name;
}
}
当子类继承了父类后,想对父类的方法功能进行扩展,就可以使用重写,这样做的目的就是:当你需要扩展新的功能的时候,不需要新建方法,在父类的方法中进行补充,这样一种面向对象思维的体现,不用重写同样可以达到这样的效果,但是用了重写更加符合OO思想。类似的还有一种概念,叫隐藏:当子类和父类方法名相同,参数不同时,子类隐藏父类的方法实现,这就是一种机制,一种叫法,没什么实际意义,相当于我们新建了方法,只是方法名和父类的相同,但是不是父类的方法的实现。
Java中不定参数调用
有的时候,我们不能确定方法的参数个数,我们可以采取这种机制(String ... value),如下面的代码:
[java]
public class B{
public static String a(String ... value) {
return "welcome to you :" + value;
}
public static void main(String[] args) {
System.out.println(a("egg"));
}
}
打印出来的结果是:welcome to you :[Ljava.lang.String;@61de33。后面这部分信息一看就是数组的信息,所以我们继续研究,发现:当你将参数写出String ... value的形式的时候,已经默认相当于:String[] value 因此你需要在方法内部获取的数据的时候写成数组下标的形式:
[java]
public static String a(String ... value) {
return "welcome to you :" + value[0];
}
当有多个参数时,同样用下标来取值:
[java]
public class B {
public static String a(String... value) {
return "welcome to you :" + value[0] + value[1] + value[2];
}
public static void main(String[] args) {
System.out.println(a("egg", ":niu", ":baby!"));
}
}
这种机制在有些开发中特别有用,降低代码量,使程序更加简洁,不过有时会牺牲一点可读性。
二、类与对象的关系
经过上面这么多的演练,我们总结下类和对象的关系:看看下面的代码:
[java]
public class B {
public static void main(String[] args) {
B b = new B();
A a = new A();
}
}
class A {
}
这段代码中,A和B都是类,a和b属于对象,他们之间是种什么关系呢?
1、类是一类具有相同属性的事物的统称,是一种抽象。
2、对象是类的具体体现,又称实例。
3、类是一种静态的概念,而对象是一种动态的机制。
每个人都有不同的看法,还有什么关系,希望大家补充,笔者真心希望各位读者能认真思考,积极提出宝贵的建议!因为有不少读者提出之前的博文篇幅过长,希望我尽量写的短一点儿,方便 阅读,所以我将其它内容放在了下一篇,希望朋友们能够继续阅读!