extends不用多说,是来继承的关键字,但它有几个要点:
- java不允许多重继承(一个类只能继承一个父类,不能继承多个父类)
- 派生类会继承基类所有属性和方法,但不能直接访问基类的private私有属性
- 实例化派生类时,会先去调用父类的构造方法构造基类,再实例化自身的属性类对象,最后才是调用自身类构造方法.
- 在派生类中,有个隐藏的super,表示为基类,所以我们可以通过它指定如何构造基类
JAVA继承方法总结
重写方法的时候,要注意方法的权限,返回值,以及参数部分一致
class txxx
{public void func(int i){System.out.println("Parent::func()");}
}class Derived extends txxx
{public void func(int i) //覆写父类的func方法{System.out.println("Derived::func()");}
}public class AT{public static void main(String args[]){Derived d = new Derived();d.func(1);}
}
如果派生类覆写的基类方法是private的,则不能实现覆写功能,因为基类的private方法是不可见的,派生类覆写方法,一般用于基类的方法不满足当前派生类功能实现时,才会去覆写.
class Parent
{public void func(){System.out.println("Parent::func()");}public void print(){func();}
}class Derived extends Parent
{public void func() //覆写父类的func方法{System.out.println("Derived::func()");}
}public class Test{public static void main(String args[]){Derived d = new Derived();d.print();} }
如果将public void func()改为private void func()的话,则无法实现覆写
当在某个类的方法前面定义final时,则表示该方法不允许在子类里进行方法覆写(可以实现方法重载)
在java中,final被称为终结器, final可以修饰变量,方法和类.
class A {public final void fun() {} //此方法不允许子类覆写public void fun(int i) {} //可以实现方法重载
}class B extends A {public void fun() {} // 错误:此处不允许覆写
}