关于子类继承父类的一个容易忽视的小细节

子类继承父类的时候对父类的属性有没有继承呢??(其实我自己刚学,一些细节的不是太清楚)

下面的代码会说明一个容易忽视的细节:

这是父类:

public class FatherClass {
  int a = 10;

  public void fun(){
    System.out.println("This is FatherClass funMothed!!");
  }
}

这是子类:

public class Child extends FatherClass {
  int a = 20;

  public void fun(){
    System.out.println("This is Child‘s funMothed!");
  }
}

这是Test类:

public class Test {

  public static void main(String[] args) {
    FatherClass f = new Child();
    System.out.println(f.a);
    f.fun();
  }

}

这是输出结果:

10
This is Child‘s funMothed!

如果不注意的话以为输出的是20

输出10是因为子类继承的是父类的方法

这个细节今天我也是才知道,而且这是我第一次在博客上写东西。哈哈,以后会持续写的!!!

时间: 2024-12-29 11:40:26

关于子类继承父类的一个容易忽视的小细节的相关文章

C语言里面关于数组的一个容易忽视的小细节

[email protected]_44_28_sles10sp1:~/code> cat test3.cpp #include <stdio.h> int main(){ char a[5] = {0}; char *pa = a; printf("a = %p, pa = %p, &a=%p, &pa=%p\n", a, pa, &a, &pa); return 0;}[email protected]_44_28_sles10sp

UVM:9.1.5 子类继承父类的callback 机制

1.假如一个公司有前后两代产品,新的验证平台与旧的大部分一致,只是要扩展my_driver,即需要从my_driver 中派生一个新的类new_driver.还要保证第一代测试用例在尽量不改动的前提下在新的通过. 1)由于第一个callback 在声明的时候指明了这个池子只能用于my_driver,指明才能让new_driver用呢? 2.这要子类继承父类的callback.new_driver: 1)使用了uvm_set_super_type 宏,把子类和父类关联在一起.第一个是子类,第二个是

Java子类继承父类,当实例化子类对象时的执行顺序

子类继承父类,当实例化子类对象时,执行顺序如下:     父类层级静态块      自身静态块     父类块      父类构造器     自身块      自身构造器 由于继承,肯定应该先加载父类再加载子类,加载类自然会调用静态块,然后是调用父类的构造函数和子类的构造函数,不过构造函数调用前肯定要先调用域或块,这样才能正确创建对象. ················································赋值顺序如下:     父类的静态变量赋值     自身的静态变

js中的子类继承父类的方法和属性

上次讲了个简单的继承,这次 咱们讲个稍微复杂点的,那就是让子类继承父类的属性和方法,假设人 (Person)是父类,工人(Worker)是子类,让worker继承person的属性和方法: 父类: function Person(name,age) { this.name=name; this.age=age; } Person.prototype.showName=function() { alert(this.name); } function worker(name,age,job) {

子类继承父类的私有属性

最近学习继承,从书中看到子类继承父类,子类拥有父类所有的属性和方法,于是使用程序去验证,发现父类的私有属性和私有方法,子类是不能访问的,当然一些父类的私有属性可能可以通过相应的方法访问到,但是私有的方法似乎不能简单的访问,这里暂不考虑Java反射机制,于是我分析,子类不能继承父类私有的属性及方法,但是分析了内存后,我发现我是错的,在一个子类被创建的时候,首先会在内存中创建一个父类对象,然后在父类对象外部放上子类独有的属性,两者合起来形成一个子类的对象.所以所谓的继承使子类拥有父类所有的属性和方法

python之子类继承父类时进行初始化的一些问题

直接看代码: class Person: def __init__(self): self.name = "jack" class Student(Person): def __init__(self): self.school = "一中" stu = Student() print("学生的姓名是:",stu.name) 此时,程序是不能正常运行的,运行之后报错: 这是为什么呢? __init__相当于是python类的构造方法,在类进行实例

子类继承父类后想要扩展父类方法

1 >>> class PClass(object): 2 def setInfo(self,sex='Male'): 3 self.gender = sex 4 5 6 >>> class CClass(PClass): 7 def setInfo(self,who): 8 self.name = who 9 PClass.setInfo(self)#子类继承父类后想要扩展父类方法,若仍想保留父类方法可以通过回调 10 11 12 >>> x = C

子类继承父类传参01

python中子类继承父类(传参数与不传参数) Class A(object): def __init__(self,a='A'): print('Enter: ',a) print('Leave: ',a) Class B: def __init__(self,a=None): print('ENter B') super(B,self).__init__(a) print '111' b=B() print '222' b=B(123) 输出: 111 Enter B ('ENter: ',

python 子类继承父类__init__(转载)

转载: http://www.jb51.net/article/100195.htm 前言 使用Python写过面向对象的代码的同学,可能对 __init__ 方法已经非常熟悉了,__init__方法在类的一个对象被建立时,马上运行.这个方法可以用来对你的对象做一些你希望的 初始化 . 注意:这个名称的开始和结尾都是双下划线. 父类A ? 1 2 3 4 5 6 class A(object):  def __init__(self, name):   self.name=name   prin