Day04有关继承的小结(二)
程序员文章站
2022-04-11 12:41:08
...
子类不能继承父类的内容
引入:
子类继承父类,子类得到了父类的属性和行为。
但是并非所有的父类的属性和行为等子类都可以继承。
子类不能继承父类的东西:
子类不能继承父类的构造器:子类有自己的构造器。(没有争议)
public class ExtendsDemo {
public static void main(String[] args) {
Cat c = new Cat();
System.out.println(c.tempName);
}
}
class Cat extends Animal{
}
class Animal{
Temp a = new Temp();
}
class Temp{
String tempName = "暂时";
}
如上面的代码我给Animal设置了个构造器,然后让Cat继承了Animal正常来说,Animal中能实现的功能Cat中也能实现但是在实现类中构造了个Cat的构造器无法用子类Cat来实现Temp中的功能。所以上述成立。
有争议的观点(扩展):
子类是否可以继承父类的私有成员(私有成员变量,私有成员方法)?
public class ExtendsDemo {
public static void main(String[] args) {
Cat c = new Cat();
System.out.println(c.pName);//成功
System.out.println(c.name);//报错
}
}
class Cat extends Animal{
}
class Animal{
private String name = "动物名称";
public String pName = "公共动物名称";
}
如上述可知我在父类Animal中设置了private使成员变量name私有化,然后在实现类中调用报错了。但是这个观点是错误的等之后讲反射可以暴力**。
– 我认为子类是可以继承父类的私有方法的,只是不能直接访问而已。
– 以后可以暴力去访问继承自父类的私有成员~~
子类是否可以继承父类的静态成员?
public class ExtendsDemo {
public static void main(String[] args) {
Cat c = new Cat();
System.out.println(c.name);
}
}
class Cat extends Animal{
}
class Animal{
static String name = "静态动物名称";
}
上述代码看似正常运行也就是说子类可以继承父类的静态方法,但是这个观点是错误的。子类只是可以访问父类的静态成员,父类的静态成员只有一份可以被子类共享访问。 共享并非继承。
推荐阅读
-
php实现快速对二维数组某一列进行组装的方法小结
-
有关浏览器能打开网站的首页不能打开二级链接的解决方法
-
js的继承方法小结(prototype、call、apply)(推荐)
-
JavaScript的继承实现小结
-
JavaScript类的继承方法小结【组合继承分析】
-
图论小结(一)包括一些最短路,最小生成树,差分约束,欧拉回路,的经典题和变种题。强连通,双连通,割点割桥的应用。二分匹配
-
php实现快速对二维数组某一列进行组装的方法小结
-
有关于尼布甲尼撒二世的轶事有哪些 尼布甲尼撒二世是一个什么样的人
-
孙策和周瑜英年早逝和二乔有关吗?他们的死因究竟是什么?
-
有关浏览器能打开网站的首页不能打开二级链接的解决方法