函数(方法)继承 覆盖 重载

一个简单的例子,一看就明白


package com.pocketdigi;
public class Extends {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Zhang zhang=new Zhang();
		zhang.setName("shang");
		zhang.setSex("male");
		zhang.setAge(20);
		System.out.println(zhang.name);
	}

}
class People{
	String name;
	String sex;
	int age;
	void setName(String n){
		name=n;
		System.out.println("父类设置名字为"+n);
	}
	void setSex(String s){
		sex=s;
	}
	void setAge(int a){
		age=a;
	}
}
class Zhang extends People{//类Zhang继承People,是People的子类
	//覆盖父类的setName方法
	void setName(String n){
		super.setName(n);
		//super代表父类,重载父类setName方法
		name="zhang"+n;
		System.out.println("子类设置名字为"+name);
	}
}

1、子类的对象也是父类的实例,但父类的对象不是子类的实例
2、final类不能被继承,final方法不能被覆盖
3、引用不同包的类,需先import,非public的类不能引用
4、private方法只能被同类访问、default只能在同包、同类中访问,不同包只有public可被访问,如果是子类继承父类,还可访问父类的protected方法
5、private、static方法不能被覆盖,即使编译器不报错,也是产生一个新的方法,并非覆盖
6、如果方法为abstract(抽象),所在类必须声明为abstract,抽象方法没有方法体。抽象类不能实例化为对象,必须先派生子类,至少实现其中的一个方法,再实例化。如果父类为抽象类,子类要么是抽象类,要么就实现父类的抽象方法。

© 2011, 冰冻鱼. 请尊重作者劳动成果,复制转载保留本站链接! 应用开发笔记