java方法重写和super关键字
2016-08-24 09:35
281 查看
方法的重写
在子类中可以根据需要对从基类继承来的方法进行重写
重写方法必须和被重写方法具有相同的方法名称、参数列表和返回类型
重写方法不能使用比被重写方法更严格的访问权限
在Java类中使用super来引用基类的成分
子类的构造的过程中必须调用其基类的构造方法
子类可以在自己的构造方法中使用super(argument_list)调用基类的构造方法。
使用this(argument_list)调用本类的另外的构造方法,必须写在第一行
如果调用super,必须写在子类构造方法的第一行
如果子类的构造方法中没有显示地调用基类的构造方法,则系统默认调用基类的无参数的构造方法
如果子类的构造方法中既没有显式调用基类的构造方法,而基类中又没有无参的构造方法,则编译出错
不可以在一个构造方法中既调用基类的构造方法又调用本类其他的构造方法,因为this()和super()都必须是方法中的第一天语句
下面举例子说明:
//java方法重写和super关键字
//在继承中,其实就是子类定义了和父类同名的方法
//就是方法,属性都是相通的
//重写限制:
//被子类重写的方法不能拥有比父类方法更加严格的权限
//super:强行调用父类方法的执行
/*重载和重写的区别?
* 重载是发生在一个类中 对权限没有要求 而且重载的方法参数可以不同
* 重写发生在继承汇总 被子类重写的方法不能拥有比父类方法更加严格的权限,重写的方法中参数名字完全相同
*
*/
class A{
public void tell(){
System.out.println("我是tell方法");
}
//private(同一个类下) < default(在同一包下可以被访问) < public(整个工程都可以访问)
//默认default
void say(){
}
}
class B extends A{
//这种方式称为方法的重写
public void tell(){
//super不一定在重写中使用,也可以表示那些方法是从父类中被继承过来的。
super.tell(); //通过super关键字可以调用父类中的tell方法
System.out.println("我重写了tell方法");
}
}
class HelloWorld{
public static void main(String[] args){
B b = new B();
b.tell();
}
}
在子类中可以根据需要对从基类继承来的方法进行重写
重写方法必须和被重写方法具有相同的方法名称、参数列表和返回类型
重写方法不能使用比被重写方法更严格的访问权限
在Java类中使用super来引用基类的成分
子类的构造的过程中必须调用其基类的构造方法
子类可以在自己的构造方法中使用super(argument_list)调用基类的构造方法。
使用this(argument_list)调用本类的另外的构造方法,必须写在第一行
如果调用super,必须写在子类构造方法的第一行
如果子类的构造方法中没有显示地调用基类的构造方法,则系统默认调用基类的无参数的构造方法
如果子类的构造方法中既没有显式调用基类的构造方法,而基类中又没有无参的构造方法,则编译出错
不可以在一个构造方法中既调用基类的构造方法又调用本类其他的构造方法,因为this()和super()都必须是方法中的第一天语句
下面举例子说明:
//java方法重写和super关键字
//在继承中,其实就是子类定义了和父类同名的方法
//就是方法,属性都是相通的
//重写限制:
//被子类重写的方法不能拥有比父类方法更加严格的权限
//super:强行调用父类方法的执行
/*重载和重写的区别?
* 重载是发生在一个类中 对权限没有要求 而且重载的方法参数可以不同
* 重写发生在继承汇总 被子类重写的方法不能拥有比父类方法更加严格的权限,重写的方法中参数名字完全相同
*
*/
class A{
public void tell(){
System.out.println("我是tell方法");
}
//private(同一个类下) < default(在同一包下可以被访问) < public(整个工程都可以访问)
//默认default
void say(){
}
}
class B extends A{
//这种方式称为方法的重写
public void tell(){
//super不一定在重写中使用,也可以表示那些方法是从父类中被继承过来的。
super.tell(); //通过super关键字可以调用父类中的tell方法
System.out.println("我重写了tell方法");
}
}
class HelloWorld{
public static void main(String[] args){
B b = new B();
b.tell();
}
}
相关文章推荐
- 方法重载和方法重写
- 为什么java中子类重写父类的方法时声明抛出异常不能比父类范围大
- java重写(覆盖)的实现
- java的继承
- java中重载与重写的区别
- JAVA面向对象之代码块 继承 方法的重写 super关键字与重写toString()方法介绍
- Java小知识4
- Java的重写
- java中+=是什么意思
- JAVA中的final关键字
- 文章标题
- 修改Eclipse中Servlet模板
- java中方法的参数的作用
- Java死锁
- Java变量以及内存分配(非常重要)
- Java之基础总结(一)
- Java中的值传递和引用传递
- 【Spring揭秘】------ 第一章学习 Spring框架的由来
- Java Arrays类的使用
- Struts2传值问题和解析