精华内容
下载资源
问答
  • 子类是否可以修改父类的静态变量显然子类并没有继承父类的静态方法和变量而是可以去修改父类的静态变量小结 (1)探究问题 1.子类是否可以使用父类的静态方法和静态变量 2.子类是否可以修改父类的静态变量 1.子类...

    (1)探究问题

    1.子类是否可以使用父类的静态方法和静态变量
    2.子类是否可以修改父类的静态变量

    1.子类是否可以使用父类的静态方法和静态变量

    class Parent{
    	static int a =1;
    	public static void  a() {
    		System.out.println("父类的static方法运行-------");
    	}
    }
    public class Child extends Parent {
    
    	public static void main(String[] args) {
    		System.out.println(a);
    		a();
    	}
    }
    
    

    运行结果:
    1
    父类的static方法运行-------

    显然子类是可以调用父类的静态方法和变量的

    2.子类是否可以修改父类的静态变量

    class Parent{
    	static int a =1;
    	public static void  a() {
    		System.out.println("父类的static方法运行----"+a+"---");
    	}
    }
    public class Child extends Parent {
    	public Child() {
    		a+=1;
    	}
    	public static void main(String[] args) {
    		Child child = new Child();
    		System.out.println(a);
    		a();
    	}
    }
    
    

    运行结果如下:
    2
    父类的static方法运行----2—

    显然子类并没有继承父类的静态方法和变量而是可以去修改父类的静态变量

    小结

    1.子类是可以使用父类的静态方法和静态变量的
    2.子类并没有继承父类的静态方法和静态变量,只是当做全局变量可以去使用

    展开全文
  • 静态方法和属性可以继承吗

    千次阅读 2019-02-27 08:55:03
    结论:静态方法和属性可以继承,但是不能被重写。 我们将结论延伸一下: 我们知道,类的是由成员...上述的四种成员变量和方法,只有非静态的方法可以继承并且被重写(override) 而另外的三种,静态的成员变量/...
    结论:静态方法和属性可以被继承,但是不能被重写。

    我们将结论延伸一下:

    我们知道,类的是由成员变量和方法组成的,成员变量代表类的属性,而方法则代表类的行为。

    而具体根据静态与否,可以分为

    1.静态的成员变量

    2.非静态的成员变量

    3.静态的方法

    4.非静态的方法

    下边给出延伸的结论:

    上述的四种成员变量和方法,只有非静态的方法可以被继承并且被重写(override)

    而另外的三种,静态的成员变量/方法、非静态的成员变量,只能被继承,但是不能被重写,而是被隐藏

    在java中多态之所以能实现,主要依赖于继承和重写。有了继承和重写,就可以实现父类的引用指向不同的子类对象。而重写的最主要功能则是:在父类引用,调用子类重写的方法之后,调用的是子类重写的方法,也可以理解为,子类重写的方法优先级高于父类。但是对于隐藏来说,则没有这种优先级的“特权”。

    下边我们来通过具体的代码来验证结论

    
    
    package cn.qiaoh.inheritance;
     
    public class A {
    	public static String staticStr = "A静态成员变量";
    	public String str = "A非静态成员变量";
    	public static void staticMethod() {
    		System.out.println("A静态方法");
    	}
    	public void method(){
    		System.out.println("A非静态方法");
    	}
    }
    package cn.qiaoh.inheritance;
     
    public class C extends A {
     
    }
    package cn.qiaoh.inheritance;
     
    public class B extends A{
    	public static String staticStr = "B静态成员变量";
    	public String str = "B非静态成员变量";
    	public static void staticMethod() {
    		System.out.println("B静态方法");
    	}
    	public void method(){
    		System.out.println("B非静态方法");
    	}
    }
    package cn.qiaoh.inheritance;
     
    import org.junit.Test;
     
    public class StaticInheritance {
    	
    	@Test
    	public void test01() {
    		A a = new C();
    		System.out.println(a.str);
    		System.out.println(a.staticStr);
    		a.staticMethod();
    		a.method();	
    		//输出结果全部为父类A中的成员变量和方法,证明了静态的方法和成员变量可以被继承
    	}
    	
    	@Test
    	public void test02() {
    		A a = new B();
    		System.out.println(a.str);//A的非静态成员变量
    		System.out.println(a.staticStr);//A的静态成员变量
    		a.method();//B的成员方法
    		a.staticMethod();//A的静态成员方法
    		
    		//只有非静态的方法成功完成了重写,另外三个都是父类的方法和变量
    	}
    }
    
    例子:
    
    package com.study.test;
    
    public class A { //父类
    	public static String staticStr = "A静态属性";
    	public String nonStaticStr = "A非静态属性";
    	public static void staticMethod(){
    		System.out.println("A静态方法");
    	}
    	public void nonStaticMethod(){
    		System.out.println("A非静态方法");
    	}
    }
    package com.study.test;
    
    public class B extends A{//子类B
    	public static String staticStr = "B改写后的静态属性";
    	public String nonStaticStr = "B改写后的非静态属性";
    	public static void staticMethod(){
    		System.out.println("B改写后的静态方法");
    	}
    }
    package com.study.test;
    
    public class C extends A{//子类C继承A中的所有属性和方法
    
    }
    package com.study.test;
    
    public class StaticExtendsTest {
    
    	public static void main(String[] args) {
    		C c = new C();
    		System.out.println(c.nonStaticStr);
    		System.out.println(c.staticStr);
    		c.staticMethod();//输出的结果都是父类中的非静态属性、静态属性和静态方法,推出静态属性和静态方法可以被继承
    		
    		System.out.println("-------------------------------");
    		
    		A c1 = new C();
    		System.out.println(c1.nonStaticStr);
    		System.out.println(c1.staticStr);
    		c1.staticMethod();//结果同上,输出的结果都是父类中的非静态属性、静态属性和静态方法,推出静态属性和静态方法可以被继承
    	
    		System.out.println("-------------------------------");
    		B b = new B();
    		System.out.println(b.nonStaticStr);
    		System.out.println(b.staticStr);
    		b.staticMethod();
    		
    		System.out.println("-------------------------------");
    		A b1 = new B();
    		System.out.println(b1.nonStaticStr);
    		System.out.println(b1.staticStr);
    		b1.staticMethod();//结果都是父类的静态方法,说明静态方法不可以被重写,不能实现多态
    	}
    
    }
    
    
    展开全文
  • Java-变量继承

    2019-07-19 16:26:04
    答:子类是可以继承父类的变量的,但是静态变量和一般变量有所区别。 静态变量和一般变量的区别 静态变量和一般变量都能继承于父类,但是静态变量在子类中使用set方法修改,父类也会被相同地修改;一般变量在子类...

    问题的引出

    只怪自己Java语法学的不精,突然产生一个问题:因为一想到变量就是简单的几个符号,需要继承吗?Java中到底能不能继承父类的变量?
    答:子类是可以继承父类的变量的,但是静态变量和一般变量有所区别。

    静态变量和一般变量的区别

    静态变量和一般变量都能继承于父类,但是静态变量在子类中使用set方法修改,父类也会被相同地修改;一般变量在子类中用set方法修改则不会对父类有影响。

    代码演示

    public class ExtendStaticTest {
    	static int i = 2;
    	int j =4;
    	public  void print(){
        System.out.println("Static变量i的测试值为:"+i+"   "+"普通变量j的值为:"+j);
    	}
    }
    class ChildClass extends ExtendStaticTest{
        public  void set(int shuru1,int shuru2 ){
    	    i=shuru1;
        	j=shuru2;
    }
    
    
    public static void main(String[] args) {
        ChildClass cs = new ChildClass();
        ExtendStaticTest est = new ExtendStaticTest();
        cs.print();
        System.out.println("****************分隔符*******************");
        est.print();
        cs.set(8,16);
        cs.print();
        System.out.println("****************分隔符*******************");
        est.print();
    
    	}
    }
    
    展开全文
  • 在c++里static dafa member整个class在内存中只有一份,能被subclass继承,但是注意access level 静态成员函数也能被subclass继承,但是也应该注意access level。 java中可以的,做个实验就可以证明了: //Test.java...
    在c++里
    static   dafa   member整个class在内存中只有一份,能被subclass继承,但是注意access   level  
       
      静态成员函数也能被subclass继承,但是也应该注意access   level。   

    java中
    可以的,做个实验就可以证明了:
    //Test.java
    class A{
    static int i=9;
    static void print(){System.out.println(i);}
    }

    class B extends A{}

    public class Test{
    public static void main(String[] args){
    B.print();//这里B的print()就是A里面的
    System.out.println(B.i);//这里B.i就是A.i
    }
    }

    结果:
    >java Test
    9
    9
    >Exit code: 0
    展开全文
  • 可以继承,但不能被重写。...成员变量(实例变量和静态变量):与引用变量所声明的类型绑定,在编译阶段就进行了绑定。 阅读如下代码: 父类定义为抽象类,父类中定义了抽象方法eat() public abstract clas
  • 但是父类中的私有成员变量,无法在子类中直接访问,必须通过从父类中继承得到的protected、public方法(如getter、setter方法)来访问。   2、关于静态成员变量 无论父类中的成员变量静态的、还是非静态的,...
  • static静态变量被各个对象共享,有默认值,被静态修饰的东西先于对象存在。static修饰的变量和方法都在静态方法区,在加载class文件的时候就加载了,而继承发生在堆中,static修饰的变量和方法与对象无关,所以调用...
  • 先给出答案:可以被子类继承,不能被子类重写。 关于父类和子类关系还不太了解的看一去看一下链接https://blog.csdn.net/qq_34826261/article/details/97635047,里面详细解释了父类和子类不同情况下成员方法和成员...
  • 枚举类能继承吗?能被继承吗

    千次阅读 2019-07-19 00:38:25
    枚举的作用:限定“数据集”中...1.枚举类也是类,也可以有自己的成员变量,成员方法,静态方法、静态变量等,也能实现其他的接口,不能继承其他类了(因为已经继承了java.lang.Enum)。枚举类的对象默认都是public...
  • ①objective-c – 类里面的方法只有两种, 静态方法和实例方法. 在Objective‐C中,所有实例变量默认都是私有的,所有实例方法默认都是公有的②这似乎就不是完整的面向对象了,按照OO的原则就是一个对象只暴露有用的...
  • 问题一:子类可以继承父类的静态变量吗? public class Test5 { public static void main(String[] args) { Class<Cat> c = Cat.class; Field fields[] = c.getFields(); for(Field f :fiel...
  • 本文主要介绍以下两块内容的执行顺序,熟悉的大虾可以直接飘过。 一。JAVA中执行顺序 静态块 块 构造器 ... 父类继承的属性已赋值 ... 静态变量声明时赋值 成员变量声明时赋值 构造器...
  • 参考链接: 可以重写Java中的私有方法吗 JAVA面向对象之代码块与继承 代码块分类 局部代码块 作用:限制变量生命周期 书写位置:在方法中 构造代码块 开发中很少使用 书写位置:类中 方法外 调用时机:如果你有...
  • 本文主要介绍以下两块内容的执行顺序,熟悉的大虾可以直接飘过。... 静态块直接赋值 块直接赋值 父类继承的属性已赋值 静态变量声明时赋值 成员变量声明时赋值 构造器赋值    第一部分很好测试,我
  • 当final修饰的变量为静态变量(即由static修饰)时,必须在声明这个变 量的时候给它赋值 当final修饰方法时,该方法不能被重写 当final修饰类时,该类不能被继承 Final不能修饰抽象类,因为抽象类中会有需要子类实现...
  • 先自己复习一下,看看下面的C#问题都能回答上来么?...不带有 static 修饰符声明的变量称做非静态变量在类被实例化时创建通过对象进行访问同一个类的不同实例的同一非静态变量可以是不同的值示例:
  • java知识整理1

    2018-06-26 11:09:39
    1.谈谈对Java多态的理解 多态是指父类的某个...2.静态方法与静态成员变量可以继承吗?为什么? 静态方法与静态成员变量可以被继承,但是不能被重写。它对子类隐藏,因此静态方法也不能实现多态。 3.为什么Ja...
  • Java面试题集

    2018-04-17 11:45:43
    谈谈对Java多态的理解?...静态方法与静态成员变量可以继承吗,为什么?静态方法与静态成员变量可以被继承,但是不能被重写。它对子类隐藏,因此静态方法也不能实现多态。为什么Java里的匿名内部类只能访问fina...
  • 一、Java基础 1、java中有哪些基本类型? 2、java为什么能够跨平台运行? 3、String是基本数据类型吗?我可不可以写个类继承于String...10、静态变量和实例变量的区别? 11、面向对象的基本特征是什么? 12、作用域pub
  • 随便写写

    2019-10-04 02:29:20
    1.静态属性和静态方法是否可以继承?是否可以被重写?以及原因?  静态属性和静态方法可以继承但不能被重写。 静态方法是类在加载时就被加载到内存中的方法,在整个运行过程中保持不变,因而不能重写。但非...
  • 2020-11-09

    2020-11-09 19:47:24
    final、finally、finalize的区别 final final修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为...其实不全是,final修饰的成员变量(实例变量)和静态变量静态变量也只能是用st
  • final、finally、finalize的区别 final final修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能...其实不全是,final修饰的成员变量(实例变量)和静态变量静态变量也只能是用static修
  • 只能继承一个父类或实现一个接口 父类是非静态的类型,则需父类外部实例来初始化 如果定义在非静态作用域内,会引用外部类实例 只能捕获外部作用域内的final变量 创建时只有单一方法的接口可以用Lambda转换 a....
  • JAVA SE面试题 01

    2017-08-04 09:30:05
    String不属于基本数据,它是对象,默认值为null,String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类。 2. 静态变量和实例变量的区别? 静态变量也...
  • 静态成员变量静态成员函数 能否通过初始化列表初始化静态成员变量 初始化列表的好处和使用条件 友元全局函数、友元类、友元成员函数 运算符重载及++重载实现 继承方式、对象模型、同名处理 多继承和菱形继承 静态...
  • Java面试题及答案

    2019-05-27 21:25:50
    抽象类和接口的区别,类可以继承多个类吗,接口可以继承多个接口吗,类可以实现多个接口吗? 抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现...
  • my_java_study-源码

    2021-04-11 10:12:10
    12.静态属性和方法可以继承吗? 子类只能从被扩展的父类获得成员变量、方法和内部类(包括内部接口、枚举),不能获得构造器和初始化块 Java中所有方法都能被继承,包括私有方法(但不可见)和静态方法 /* *静态方法...
  • 嗨,你真的懂this吗?

    2020-12-02 23:21:09
    其实这里我们可以这样理解: setTimeout(fn,delay){ fn(); },相当于是将person2.sayHi赋值给了一个变量,最后执行了变量,这个时候,sayHi中的this显然和person2就没有关系了。 - 第三条虽然也是在...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 163
精华内容 65
关键字:

静态变量可以继承吗