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]+ ",");
}
}
}