美文网首页
Java类的成员变量调用问题

Java类的成员变量调用问题

作者: lcwcloud | 来源:发表于2018-03-17 10:51 被阅读0次

Java作为一种面向对象语言,我们在编写java代码就会显示出面向对象的特征(继承,封装,多态)。

这里我想说一个问题:

下面先简单写两个类:

// 父类

public class TestFather {

        private String str = "testFather";

        public void testSetStr() {

            str = "b";

        }

        public void testGetStr() {

            System.out.println(str);

        }

}

// 子类

public class TestSon extends TestFather {

    private String str = "testSon";

    public void test() {

        System.out.println("hi");

    }

    public static void main(String[] args) {    

        TestSon ts = new TestSon();

        ts.testGetStr();

    }

}

当我们运行程序时:输出的是:testFather

调用的子类继承父类的方法,输出子类和父类都有的str变量值,结果输出的是父类定义的str变量。

Java父子类型强转

  在实际的程序编写中,经常需要强转类型,而强转类型容易引起异常,经常引起程序的不稳定。但也有一些可以强转的清况,下面简单些两个类。

父类:

public class TestFather {

    private String str = "a";

    public void testSetStr(){

        str = "b";    

    }

    public void testGetStr() {

        System.out.println(str);

    }

}

子类:

public class TestSon extends TestFather {

    public void test() {

        System.out.println("hi");

    }

public static void main(String[] args) {

// 可以强转的情况

// 第一种,子类强转为父类

TestSon ts = new TestSon();

((TestFather)ts).testGetStr();

// 第二种,虽然创建的变量类型是父类,但是实际指向的是子类对象

TestFather ts = new TestSon();

        ((TestSon)ts).test();

// 不能强转的情况  有java.lang.ClassCastException

TestFather tf = new TestFather();

        ((TestSon)tf).testGetStr();

// java.lang.ClassCastException 文档中提供的一个抛出异常例子

// 文档讲的是:当我们写的代码中把一个对象转为一个子类,但是这个对象并不是这个这个子类的实例对象,就会抛出次异常

        Object a = new Integer(0);

        System.out.println((String)a);

    }

}

强转是要谨慎一些。

相关文章

  • Java类的成员变量调用问题

    Java作为一种面向对象语言,我们在编写java代码就会显示出面向对象的特征(继承,封装,多态)。 这里我想说一个...

  • AndroidStudio配置JavaP反汇编

    javaP: java类文件反汇编程序 jni调用java对象时,需要使用到java类的方法、成员变量,都需要一些...

  • JAVA基础-多态

    JAVA基础-多态 结论: 1、当子父类中出现同名的成员变量时,多态调用该变量时,如果父类没有该变量,则编译失败。...

  • Java基础篇

    堆栈 栈 存储局部变量 存储方法调用 堆 存储Java对象(成员变量 局部变量 类变量 ->指向的对象都存储在堆内...

  • Java编程基础(15)

    Java成员方法:Java成员方法的声明和调用、形参和实参及局部变量 声明成员方法可以定义类的行为,行为表示一个对...

  • 四、JNI-成员和方法

    成员 方法 #1. 成员 Java中成员变量分为普通成员变量和静态成员变量。普通成员变量也称为类实例成员变量,所有...

  • Java的类

    1、Java的成员变量和成员方法 }2、类的使用 3、一个对象调用的内存图 4、两个对象调用的内存图 5、对象产生...

  • PHP常用的魔术方法讲解

    PHP常见的魔术方法 __get 获得一个类的成员变量时调用 __set 设置一个类的成员变量时调用 __to...

  • IDEA的查询引用、调用关系图的功能

    Eclipse的"Call Hierarchy"可以查看一个Java方法或类成员变量的调用树(caller和cal...

  • 堆&栈

    (1)栈内存用来存储局部变量和方法调用。 (2)堆内存用来存储Java中的对象。无论是成员变量,局部变量,还是类变...

网友评论

      本文标题:Java类的成员变量调用问题

      本文链接:https://www.haomeiwen.com/subject/rtadqftx.html