1.方法的重载与覆写
No | 比较点 | 重载 | 覆写 |
1 | 英文单词 | OverLoad | Override |
2 | 概念 | 方法名称相同时,参数的类型不同 | 方法名称,参数的类型或个数完全相同 |
3 | 注意点 | 与函数的返回类型没有关系 | 访问权限不能变小 |
4 | 方法 | 在一个类里发生 | 在继承的类里发生 |
2.this与super的区别
NO | 比较点 | this | Super |
1 | 属性 | this属性表示的是本类中的属性,如果在子类中找不到属性则会从父类中继续查找 | Super属性,表示直接找到父类中的属性 |
2 | 方法 | this.方法()表示调用父类中的方法,如果找不到则从父类中查找 | 表示从子类直接找到父类中被子类覆写过的方法 |
3. | 构造 | 可以调用本类中的其他构造方法,但是要求至少有一个构造方法是没有this 调用构造是,this要放在构造方法的首行 | 从子类中调用父类的构造方法,子类不管如何编写方法,则肯定要先调用父类的构造 要放在首行 |
4 | 特殊点 | this表示当前对象 |
|
eg:设置一个动态数组,实现排序
class Array{
private int temp[]=null; //声明数组大小未知
private int foot =0 ; //用于保存下一个的记录点
public Array(int len){
if(len>0){
this.temp = new int[len];
}else{
this.temp = new int[1];
}
}
public boolean add(int i){
if(this.foot<this.temp.length){
this.temp[this.foot] =i;
this.foot++;
return true;
}else{
return false;
}
}
public int[] getArray(){
return this.temp;
}
};
class SortArray extends Array{
public SortArray(int len) {
super(len);
// TODO Auto-generated constructor stub
}
public int[] getArray(){
java.util.Arrays.sort(super.getArray());
return super.getArray();
}
}
public class ArrayDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Array arr = new Array(6);
System.out.println(arr.add(23));
System.out.println(arr.add(3));
System.out.println(arr.add(5));
System.out.println(arr.add(7));
System.out.println(arr.add(8));
System.out.println(arr.add(9));
print(arr.getArray());
}
public static void print(int[] i){
for(int x=0; x<i.length;x++){
System.out.print(i[x]+ ",");
}
}
}