staticjava继承
Ⅰ 关于java static 与继承的执行顺序
看完下面的代码你就明白了……
class Test0 {
public static String staticField = "父类-静态变量";
public String field = "父类-普通变量";
public Test0() {
System.out.println("父类-构造器");
}
static {
System.out.println(staticField);
System.out.println("父类-静态初始化块");
}
{
System.out.println(field);
System.out.println("父类-初始化块");
}
}
public class Test1 extends Test0{
public static String staticField = "子类*静态变量";
public String field = "子类*普通变量";
static {
System.out.println(staticField);
System.out.println("子类*静态初始化块");
}
{
System.out.println(field);
System.out.println("子类*初始化块");
}
public Test1() {
System.out.println("子类*子类构造器");
}
public static void main(String args[]) {
System.out.println("main方法");
Test1 test1 = new Test1();
}
}
输出结果为:
父类-静态变量
父类-静态初始化块
子类*静态变量
子类*静态初始化块
main方法
父类-普通变量
父类-初始化块
父类-构造器
子类*普通变量
子类*初始化块
子类*子类构造器
Ⅱ java中的静态方法可以被继承吗
子类可以继承父类的静态方法
classFatherClass{
protectedstaticStringname;
protectedstaticvoidsetName(Stringname){
FatherClass.name=name;
}
}
//父类调用setName()方法
FatherClass.setName("fatherName");
{
}
//子类也可直接调用父类的setName()方法,说明子类可以继承父类的静态方法
SunClass.setName("sunName");
Ⅲ java中static类可以被继承吗
java中 被static修饰的 class 都是 内部类雹斗消。
static class 是可以被继源知承的销盯
Ⅳ java中父类有static修饰的方法其子类能继承吗
父类的静态属性的方法子类不能继承,因为它从属于类亩枯好闹本身
你可迅袜洞以这样理解:
A类:public static void main(String[] args)方法
B类:public static void main(String[] args)方法
B类继承A类,如果可行的话,那就B类存在两个程序入口,无法执行
静态方法在类加载时就直接放到静态方法区不能继承
Ⅳ 关于Java 的继承问题,子类会继承父类的哪些东西
和C++类似,可以继承基类的公共属性和方法。
在Java继承里,父类的属性还有方法在声明时,如果是public关键字即公共属性,则在子类继承时,这些属性和方法都会被子类继承。受保护的也可以继承
但是私有的类属性成员和方法则无法继承。
.子类继承父类的成员变量
当子类继承了某个类之后,便可以使用父类中的成员变量,但是并不是完全继承父类的所有成员变量。具体的原则如下:
1)能够继承父类的public和protected成员变量;不能够继承父类的private成员变量;
2)对于父类的包访问权限成员变量,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;
3)对于子类可以继承的父类成员变量,如果在子类中出现了同名称的成员变量,则会发生隐藏现象,即子类的成员变量会屏蔽掉父类的同名成员变量。如果要在子类中访问父类中同名成员变量,需要使用super关键字来进行引用。
2.子类继承父类的方法
同样地,子类也并不是完全继承父类的所有方法。
1)能够继承父类的public和protected成员方法;不能够继承父类的private成员方法;
2)对于父类的包访问权限成员方法,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;
3)对于子类可以继承的父类成员方法,如果在子类中出现了同名称的成员方法,则称为覆盖,即子类的成员方法会覆盖掉父类的同名成员方法。如果要在子类中访问父类中同名成员方法,需要使用super关键字来进行引用。
Ⅵ 继承来的方法(在子类中)能使用static修饰吗为什么java
不能用static修饰。
原因:
抽象方法的最实质的意义在于被未来的子类覆盖实现掉。本身是个空方法。private的实质意义在于本类其他方法调用它。本身是个空方法,别人调用无用,所以
abstract和private在一起毫无意义。final规定子类不能再覆盖它。abstract是专等着要别人来覆盖,二者矛盾。所以不能放在一起使用。
static的成员是在程序执行到main时就已经确定的。
动态方法调度就是指在运行时才决定执行哪个方法(是子类的还是父类的)衫答迅。比如运行时如
果用户输入自行车,就执行自行车的驾驶方法。
如果用户输入小轿车,就举激执或此行小轿车的驾驶方法,涉及到用户,这些都只能在运行时才能干。
而abstract一定用到动态方法调度。所以这静态和动态二者是矛盾的,不能一起用。因为道理是这样,所以当时sun公司的设计者就这样设计了。
Ⅶ JAVA:父类的static变量能被子类继承吗
可以,子类可以继承父类的所有变量和方法,不管是不是static的,只有父类里private的属性和方法不能在子类里直接使用,但是它照样继承,比如调用父类的set方法就可以为继承来的私有变量赋值,可见私有的东西也可以继承
Ⅷ Java中,static成员可以被继承吗
static成员可以被继承,final定义的类不能有子类,方法不能被覆写,变量即为常量,不能修改
Ⅸ java静态方法能被继承吗原因
一,java中静态属性和静态方法可以被继承,但是没有被重写(overwrite)而是被隐藏.
二,原因:
1, 静态方法和属性是属于类的,调用的时候直接通过类名;方法名完成对,不需要继承机制即可以调用;
(1)如果子类里面定义了静态方法和属性,则这时候父类的静态方法或属性称之为"隐藏";
(2)如果你想要调用父类的静态方法和属性,直接通过父类名.方法或变量名完成,至于是否继承,子类是有继承静态方法和属性,但是跟实例方法和属性不太一样,存在"隐藏"的这种情况。;
2, 多态之所以能够实现依赖于继承、接口和重写、重载(继承和重写最为关键),有了继承和重写就可以实现父类的引用指向不同子类的对象;
3,重写的功能是:"重写"后子类的优先级要高于父类的优先级,但是“隐藏”是没有这个优先级之分的。
4, 静态属性、静态方法和非静态的属性都可以被继承和隐藏而不能被重写,因此不能实现多态,不能实现父类的引用可以指向不同子类的对象。
5,非静态方法可以被继承和重写,因此可以实现多态。
Ⅹ Java static方法会被子类继承吗
父类中的static方法会被子类继承,而且与可以通过父类名.方法名直接调用static方法一样,可以通过子类名.方法名直接调用继承的static方法
示例代码如下: