java子类继承了父类哪些内容?java父类子类怎么写
本篇文章给大家谈谈java子类继承了父类哪些内容,以及java父类子类怎么写对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
关于Java 的继承问题,子类会继承父类的哪些东西
和C++类似,可以继承基类的公共属性和方法。
在Java继承里,父类的属性还有方法在声明时,如果是public关键字即公共属性,则在子类继承时,这些属性和方法都会被子类继承。受保护的也可以继承
但是私有的类属性成员和方法则无法继承。
.子类继承父类的成员变量
当子类继承了某个类之后,便可以使用父类中的成员变量,但是并不是完全继承父类的所有成员变量。具体的原则如下:
1)能够继承父类的public和protected成员变量;不能够继承父类的private成员变量;
2)对于父类的包访问权限成员变量,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;
3)对于子类可以继承的父类成员变量,如果在子类中出现了同名称的成员变量,则会发生隐藏现象,即子类的成员变量会屏蔽掉父类的同名成员变量。如果要在子类中访问父类中同名成员变量,需要使用super关键字来进行引用。
2.子类继承父类的方法
同样地,子类也并不是完全继承父类的所有方法。
1)能够继承父类的public和protected成员方法;不能够继承父类的private成员方法;
2)对于父类的包访问权限成员方法,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;
3)对于子类可以继承的父类成员方法,如果在子类中出现了同名称的成员方法,则称为覆盖,即子类的成员方法会覆盖掉父类的同名成员方法。如果要在子类中访问父类中同名成员方法,需要使用super关键字来进行引用。
Java子类继承父类时也继承父类的静态函数吗
其实楼主只要理解static修饰的成员在内存中的分配情况就能理解;
以楼主代码为例:
1.首先声明一点: Static修饰的变量/函数优行于该类对象存在;随着类的加载而加载,而这时还不需要对象;这也是静态代码可用类名.出来的原来;
2.理解以上就可推断出很多;eg:
2.1假设有B b=new B();
则这时因为继承的关系,会一直调用到A的构造方法。这样就会把A,B中两个print()都加入进方法区,但A的print()方法在A对应的区域,B的print方法在B中对应的区域;
此时我们用b,print()调用的是B中的print();
2.2假设有A a=new B();
此时因为编译器在编译时认为a的类型是A,所以调用的是A中的print();
//这也是父类对象不能调用子类对象的特有方法的原因.。
而在运行时, jvm会发现a的真实类型是B,所以a可向下转型为B类型;这时就可以调用子类特有方法
//这也是为什么可以向下转型,
但对于静态成员,不管在编译时还是运行时,父类对象都不能调用子类特有的静态方法;
而子类可以继承父类非private的static成员,子类也有自己特有静态方法,但这个名字和父类一样.也就是说其实子类同时有两个静态方法;但这两个方法不在同一区域内,所以不存在同名的冲突。只是子类的静态方法屏蔽了父类的静态方法;你可以把静态方法看成子类对象特有的方法。
其实B对象中也可访问A类中的print(),修改代码即可;
Java中子类能够继承父类的private属性或方法吗
子类继承父类,子类拥有了父类的所有属性和方法。
程序验证,父类的私有属性和方法子类是无法直接访问的。当然私有属性可以通过public修饰的getter和setter方法访问到的,但是私有方法不行。
假设:子类不能够继承父类的私有属性和方法
那么:分析内存后,会发现,当一个子类被实例化的时候,默认会先调用父类的构造方法对父类进行初始化,即在内存中创建一个父类对象,然后再父类对象的外部放上子类独有的属性,两者合起来成为一个子类的对象。
所以:子类继承了父类的所有属性和方法或子类拥有父类的所有属性和方法是对的,只不过父类的私有属性和方法,子类是无法直接访问到的。即只是拥有,但是无法使用。
关于java子类继承了父类哪些内容的内容到此结束,希望对大家有所帮助。