父类
public abstract class A {
public void sayHello(){
System.out.println("sayHello in A");
}
public abstract void sayHi();
}
子类B
public class B extends A{
@Override
public void sayHi(){
System.out.println("sayHi() in B");
}
}
子类C
public class C extends A{
@Override
public void sayHi() {
System.out.println("sayHi() in C");
}
}
测试一下效果
public class Test {
public static void main(String[] args){
A a = new B();
a.sayHello();
a.sayHi();
a = new C();
a.sayHello();
a.sayHi();
}
}
结果是:
sayHello in A
sayHi() in B
sayHello in A
sayHi() in C
------
下面说下错误的写法。
在父类里没有写那个虚函数。
父类A
public abstract class A {
public void sayHello(){
System.out.println("sayHello in A");
}
}
子类B
public class B extends A{
public void sayHi(){
System.out.println("sayHi() in B");
}
}
测试
public class Test {
public static void main(String[] args){
A a = new B();
a.sayHello();
//a.sayHi(); 这句话是会报错的。、
//用父类指针指向子类,如果父类中没有这个方法,你即便指向的子类有这个方法
//也没有办法用这个父类指针来调用这个方法。(如果你真的想要这么做,就必须要审明一个虚函数。)
}
}
分享到:
相关推荐
Java面向对象编程中的重写(override)指的是子类可以重写其父类中的非private方法,使得子类在调用该方法时会使用自己的实现而不是父类的实现。 重写(Override)讲解 定义一个名为 Animal 的父类和一个名为 Cat 的...
从虚拟机角度看Java多态->(重写override)的实现原理
java
主要介绍了Java重写(Override)与重载(Overload)区别原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Java面向对象(进阶)-- 四种权限测试与方法的重写(override_overwrite)
Java 中的重载、重写、继承和多态是四个不同的概念,它们之间存在一定的关系,但也存在明显的区别。 重载(Overload) 重载是指在同一个类中可以定义多个同名的方法,但这些方法的形参个数或类型必须不同。编译器...
override 关键字可以用来重写父类中的虚拟方法,以便在子类中提供自己的实现。在 C# 中,如果子类想要重写父类中的虚拟方法,必须使用 override 关键字,否则将不会编译通过。 在上面的代码中,我们可以看到 ...
方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现,想要了解更多请参考本
主要介绍了java 重载(overload)与重写(override)详解及实例的相关资料,并附实例代码,需要的朋友可以参考下
2. 在Java中,override和overload是两个不同的概念,override是指子类重写父类的方法,而overload是指同一个类中多个方法的名称相同但是参数列表不同的现象。 3. 在Java中,抽象类和接口是两种特殊的类,它们都不能...
// 不能Override父类中的方法,因为它抛出了比父类中非法范围 // 更大的异常。 //public void fun() throws Exception { // System.out.println("fun in OverrideTest1"); //} // 这个方法并没有Override父类...
方法重写(Override/Overwrite):是指子类重写了从父类继承过来的方法。 区别:方法重载没有继承、属于一种静态联编技术。 方法重写有继承、属于动态联编技术。 10.什么是抽象类?什么是接口?抽象类与接口的区别?
在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。 但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。 方法重写又称方法覆盖。 (2)若子类中...
Java中是否可以覆盖(override)一个private或者是static的方法?“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。Java中static方法不能被覆盖,因为方法覆盖是基于...
方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和...
子类可以对从父类继承的方法进行重写,以便根据子类的需要来覆盖掉父类中的方法实现。这样在调用时,可以根据对象的不同来执行对应的方法。 例如: class Animal { public void move() { System.out.println("动物...
15、构造器(constructor)是否可被重写(override)? 16、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 17、是否可以继承String类? 18、当一个对象被当作参数传递到一个方法后...
熟悉使用@Override注解重写父类方法和使用super关键字调用父类方法。 阅读建议: 建议读者在阅读前具备Java的基础知识,包括类、对象、方法和成员变量等概念。 在阅读过程中,尝试编写简单的Java程序,创建并使用...
2.方法重写(override): 1)发生在父子类中,方法名相同,参数列表相同,方法体不同 2)重写方法被调用时,看对象的类型 3)重写需要遵循“两同两小一大”原则 3.重写与重载的区别:------------常见面试题
用final关键字修饰的方法是不能被该类的子类override(重写),因此,如果在想明确禁止 该方法在子类中被覆盖的情况下才将方法设置为final的。 注:类的private方法会隐式地被指定为final方法。 public class ...