1.重写
(1方法修饰符可以不同,父类用private修饰的成员属性子类无法访问,父类用static修饰的方法子类无法重写,子类的方法权限要大于等于父类,权限排序:public>protected>default>private。
public class Fu {
public Fu() {
}
protected Fu meth(){
System.out.println("这是父类的方法");
return null;
}
}
class Zi extends Fu{
public Zi meth(){
System.out.println("这是子类的方法");
return null;
}
}
class Test1{
public static void main(String[] args) {
new Zi().meth();
}
}
*(2).返回值类型可以不同, 子类返回值类型可以是父类返回值类型的子类,代码如下。
public class Fu {
public Fu() {
}
public Fu meth(){
System.out.println("这是父类的方法");
return null;
}
}
class Zi extends Fu{
public Zi meth(){
System.out.println("这是子类的方法");
return null;
}
}
class Zizi extends Fu{
public Zizi meth(){
System.out.println("这是子类的子类的方法");
return null;
}
}
class Test1{
public static void main(String[] args) {
new Zizi().meth();
}
}
2.重载
方法重载概述
1.在同一个类中, 允许存在一个以上的同名方法, 只要它们
的参数个数或者参数类型不同即可。
方法重载特点
1.与返回值类型无关, 只看方法名和参数列表
2/在调用时, 虚拟机通过参数列表的不同来区分同名方法
public class TestOverWrite {
public int add(int a,int b){
return a+b;
}
public float add(float a,float b){
return a+b;
}
public int add(int... a){
int sum=0;
for (int i : a) {
sum+=i;
}
return sum;
}
public static void main(String[] args) {
TestOverWrite testOverWrite = new TestOverWrite();
System.out.println(testOverWrite.add(1, 2));
System.out.println(testOverWrite.add(1f, 2f));
System.out.println(testOverWrite.add(1, 2, 3));
}
}
out
3
3.0
6
3.继承
(1).父类中的私有方法(属性)不能被继承,且只能在本类中使用,new出来的对象也不能使用。
(2)this() 和 super()只能用于构造方法的第一行,super.(父类非私有成员变量方法)可调用。