是(chong)用,顾名思义就是说可以多处重复使用,比如写了一个打印的方法,然后您在其他代码里也需要打印,那就直接调用刚刚写的那个打印方法
专注于为中小企业提供成都网站制作、网站建设、外贸网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业偃师免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了1000多家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
//这个是包名,具体包的划分以及继承类包的层次请参阅JAVA方面的书籍
//在这个例子里面 类A 和类B 是在同一个包下
//package a;
//A类,这个类是 父类
public class A {
//a 是A类的私有属性
private String a = "我是a";
//b 是可以被继承的属性
public String b = "我是b";
//该方法可以被继承
//虽然 属性a 不能被继承,
//但是可以通过构造公有方法来实现对属性 a 的调用
public String getA(){//获取属性a的值
return a;
}
//该方法可以被继承
//虽然 属性a 不能被继承,
//但是可以通过构造公有方法来实现对属性 a 的调用
public void setA(String aa){//对属性a进行设置
a = aa;
}
//该方法可以被继承
public String getB(){//获取属性b的值
return b;
}
//该方法可以被继承
public void setB(String bb){//对属性b进行设置
b = bb;
}
}
//---------------------------我是分类符------------------------
//package a;
//B 类,这个类是 A 类的子类(继承类)
public class B extends A {
//B类是新建立的类,最好不要写在和A类同一个java文件下
//由于 B 类继承了A类,
//所以 A 类注明的公有方法可以不用写在 B 类中
//只需要声明并实例化 B 的对象就可以调用 A 类中的公有方法
//B 类 中也可以书写 A类中没有的方法以达到B类所需要达到的目的
//其他访问权限修饰符在这里先不做解释(protected等)
//属性c 是 A 类中没有的
String c = "我是B类中的c";
//该方法A类中没有,只能通过声明并实例化B类的对象才能调用
public String getC (){
return c;
}
//该方法A类中没有,只能通过声明并实例化B类的对象才能调用
public void setC(String cc){
c = cc;
}
//main方法
public static void main(String[] args) {
B b = new B();
//String a1 = b.a;//这个就是错误的,因为a是A类的私有变量,不能被继承
String b1 = b.b;//这个就可以
String b_a = b.getA();//也可以调用
String b_b = b.getB();//也可以调用
System.out.println("a 的值 = " + b_a);
System.out.println("b 的值 = " + b_b);
b.setA("修改a");//设置a 的值
System.out.println("修改过后的 a 的值 = " +
b.getA());
b.setB("修改b");//设置b 的值
System.out.println("修改过后的 b 的值 = " +
b.getB());
String b_c = b.c;//设置c 的值
System.out.println("B类中c的值"+b_c);
b.setC("修改c");
System.out.println("修改过后的 c = " + b.getC());
}
}
看看下面这个例子,就会明白了:JAVA中继承可以实现代码复用,
由于在父类中已经定义的方法,被子类继承以后,就可以使用,实现了代码的复用
class Father{
private int moneyDollar=300;
int moneyHK=200;
int add(int x,int y){
return x+y;
}
}
class Son extends Father{
int moneyRMB=800;
public void changMoneyHK(int x){
moneyHK=x;
}
public void changMoneyRMB(int x){
moneyRMB=x;
}
int subs(int x,int y){
return x-y;
}
}
class GrandSon extends Son{
int multi(int x,int y){
return x*y;
}
}
public class Example5_1{
public static void main(String args[]){
int a=5,b=3;
Son son=new Son();
GrandSon sunzi=new GrandSon();
son.changMoneyHK(666);
son.changMoneyRMB(5000);
System.out.println("儿子的港币是继承的属性,当前的值是:"+son.moneyHK);
System.out.println("儿子的人民币是新增的属性,当前的值是:"+son.moneyRMB);
System.out.printf("减法是儿子新增的功能,%d-%d等于%d\n",a,b,son.subs(a,b));
System.out.printf("加法是儿子继承的功能,%d+%d等于%d\n",a,b,son.add(a,b));
System.out.println("孙子的港币和人民币都是继承的属性,,当前的值是:");
System.out.println("港币:"+sunzi.moneyHK+" 人民币:"+sunzi.moneyRMB);
System.out.printf("乘法是孙子新增的功能,%d*%d等于%d\n",a,b,sunzi.multi(a,b));
System.out.printf("加法是孙子继承的功能,%d+%d等于%d\n",a,b,sunzi.add(a,b));
System.out.printf("减法是孙子继承的功能,%d-%d等于%d\n",a,b,sunzi.subs(a,b));
}
}
可重用性有很多方面 对象的重用 方法的重用 变量的重用 对象和变量的可重用性很好理解吧 对象就是类的可重用性的体现 把同一类型的对象抽象化 创建类 变量的重用在于 同一作用域 一次定义 到处使用 方法的可重用性 在于 把同一逻辑抽象出来作为方法 在作用域内反复使用 比如 做加法 3 +4 5+ 6 7+8 就是同一逻辑 抽象出方法 public static int add(int a ,int b){ return a+b; } 现在只需要 int c = add(3,4) add(5,6) 次数少 逻辑简单看不出来什么 当逻辑复杂时 代码的可重用性 对于 代码的易读性是很好的提升
建议你看一下 thinking in pattern ,这里面有较详细的说明。 说明对象的使用,以及对象持久化、代码复用。 其实简单理解重用就是说:当一个操作会在其他几个操作中都会使用到的时候, 你就可以把这个操作提取出来,写一个公用的方法,供其他方法使用就是了。
重构可以说是覆盖,用覆盖一词来讲就比较清楚。
在面向对象的一个特性--继承中就表现出重构的意思。
重构,就是继承于父类方法的子类将子类的方法重写,方法名及参数完全相同.
重用是继承了就可以用父类定义的方法和变量,不用再定义一次。
比如说
class B {
public void see(){
System.out.println("this is b");
}
}
public class A extends B{
public void see() {
System.out.println("this is a");
}
public static void main(String[] args) {
B b=new A();
b.see();
}
}
这是重构的意思。
class B {
public void see(){
System.out.println("this is b");
}
}
public class A extends B{
public static void main(String[] args) {
B b=new A();
b.see();
}
}
这是重用的意思