这个应该是构造方法的重构
public class SeqList<E> implements LList<E> {
private Object[] table; private int n; public SeqList(int capacity) {
this.table = new Object[Math.abs(capacity)];
this.n = 0;
} public SeqList() {
this(20);
}
这个重构不是要在继承于父类方法的子类将子类的方法重写
这个为什么不要呀 感念混淆了
public class SeqList<E> implements LList<E> {
private Object[] table; private int n; public SeqList(int capacity) {
this.table = new Object[Math.abs(capacity)];
this.n = 0;
} public SeqList() {
this(20);
}
这个重构不是要在继承于父类方法的子类将子类的方法重写
这个为什么不要呀 感念混淆了
我猜你是不是 第二个构造函数你不是很明白啊?
首先你写了两个构造函数,第二个构造函数因为this(20)的原因,又一次调用了第一个构造函数!
这个是从网上搜索来的
public class A{
public void print(String param){
System.out.println("这是A类中的print方法");
System.out.println(param);
}
}
public class B extends A{
public void print(String param){
System.out.println(param);
System.out.println("这是A类中的print方法");
}
}
这个是我们老师说的 老师说那个me()方法就叫重构
package ATM;
import java.util.*;
public class ATM {
Person[] person=new Person[3]; /**
* @param args
*/
Scanner input=new Scanner(System.in);
int current=0;
public void data(){
Person p1=new Person();
p1.account=1001;
p1.password=1111;
p1.yourmoney=1000;
Person p2=new Person();
p2.account=1002;
p2.password=1111;
p2.yourmoney=1000;
Person p3=new Person();
p3.account=1003;
p3.password=1111;
p3.yourmoney=1000;
person[0]=p1;
person[1]=p2;
person[2]=p3;
}
public void show(){
System.out.println("---------------------------------\n\n");
System.out.println("欢迎使用ATM取款机\n\n");
System.out.print("请输入卡号:");
int name=input.nextInt();
System.out.print("请输入密码:");
int pwd=input.nextInt();
for(int i=0;i<person.length;i++)
{
if(person[i].account==name&&person[i].password==pwd)
{
current=i;
showmain();
//System.out.println("1111");
break;
}
}
System.out.println("程序结束");
}
String con="";
public void showmain(){
System.out.println("---------------------------------\n\n");
System.out.println("请输入选择功能\n\n");
System.out.println("1.查询余额");
System.out.println("2.现金存款");
System.out.println("3.现金提取");
System.out.println("4.取卡退出\n\n");
System.out.print("请选择(1-4):");
int num=input.nextInt();
if(num==1){
yue();
}else if(num==2){
cunkuan();
}else if(num==3){
qukuan();
}else if(num==4){
System.out.println("账号存款为:"+person[current].yourmoney);
System.out.println("取卡退出");
show();
}
}
public void me(){
System.out.println("---------------------------------\n\n");
System.out.print("输入0继续:");
int aa=input.nextInt();
if(aa==0){
showmain();
}
}
public void yue(){
System.out.println("---------------------------------\n\n");
System.out.println("账号:"+person[current].account);
System.out.println("剩额:"+person[current].yourmoney+"元");
System.out.println("---------------------------------\n\n");
System.out.print("输入0继续:");
int aa=input.nextInt();
if(aa==0){
showmain();
}
}
//double a,b;
public void cunkuan(){
System.out.print("请输入存款金额:");
double a=input.nextDouble();
person[current].yourmoney+=a;
System.out.println("---------------------------------\n\n");
System.out.println("存款操作成功!\n");
me();
}
public void qukuan(){
System.out.print("请输入取款金额:");
double a=input.nextDouble();
if(a<=person[current].yourmoney){
person[current].yourmoney=person[current].yourmoney-a;
System.out.println("---------------------------------\n\n");
System.out.println("取款操作成功!\n");
me();
}else{
System.out.println("---------------------------------\n\n");
System.out.println("余额不足!\n");
me();
}
}
}我的疑问就是 一个是写在2个类中的 一个是写在一个类中 到底那个才是真的重构啊
然后第2个例子有点难理解..你要知道,重构是有一个过程的.并不能说某个方法就是重构.如 public void yue(){
System.out.println("---------------------------------\n\n");
System.out.println("账号:"+person[current].account);
System.out.println("剩额:"+person[current].yourmoney+"元");
System.out.println("---------------------------------\n\n");
System.out.print("输入0继续:");
int aa=input.nextInt();
if(aa==0){
showmain();
}
}
因为其中这一段System.out.println("---------------------------------\n\n");
System.out.print("输入0继续:");
int aa=input.nextInt();
if(aa==0){
showmain();
}在几个方法里面都有出现.所以将其另外封装到一个me()方法里面,然后在这几个方法里面调用me();这种行为就称为 重构.