Java中关于变量的几种情况

1、继承时变量的引用关系

class Animals {
int age = 10;
void enjoy() {
System.out.println("Animals enjoy!");
} } class Dogg extends Animals {
int age = 20;
int weight;
void enjoy() {
System.out.println("Dog enjoy!");
}
} public class Test {
public static void main(String[] args) {
Animals a = new Animals();
a.enjoy();
System.out.println(a.age); Dogg d = new Dogg();
d.enjoy();
System.out.println(d.age); Animals d1 = new Dogg();
d1.enjoy();
System.out.println(d1.age);
Dogg s = (Dogg)d1;
System.out.println(s.age); } }

由此可见,父类和子类的变量是同时存在的,即使是同名。

子类中看到的是子类的变量,父类中看到的是父类中的变量。

它们互相隐藏,而同名的方法则是实实在在的覆盖(重写)。

如Animals d1 = new Dogg();

d1即是一个Animals的对象,也是一个Dogg的对象,

那么调用方法时,是根据对象的实际类型调用的,

实际类型是Dogg,所以永远调用子类的方法。

而访问成员变量就不同了,它是Animals时,访问的是父类的成员变量,

转型为Dogg的话,访问的就是子类的成员变量了。

2、Java中的传值调用

public class CallByValue {
Customer c1 = new Customer("张三");
some(c1);
System.out.println(c1.name);//结果是李四 Customer c2 = new Customer("赵六");
other(c2);
System.out.println(c2.name);//结果是赵六 static void some(Customer c){
c.name = "李四";
}
static void other(Customer c){
c = new Customer("王五");//建立新对象指定给c参考,原本参考的对象会被清除
}
}
class Customer{ String name;
public Customer(String name) {
this.name = name;
}
}

Java中只有传值调用,在some方法中,c和c1参考的是同一对象,即c.name修改的是同一对象的变量。

在调用other()方法时,c和c2参考的是同一对象,在c = new Customer("王五")这一句就是要求建立新对象,并指定给c参考,即c和c2变成了两个不同的对象。

Java中关于变量的几种情况的更多相关文章

  1. Java中数组转为List三种情况的优劣对比,常犯的类型转换错误原因解析

    一.最常见方式(未必最佳)通过 Arrays.asList(strArray) 方式,将数组转换List后,不能对List增删,只能查改,否则抛异常. 关键代码:List list = Arrays. ...

  2. java中的变量和数据类型

    变量和javascript的变量含义一样 在Java中,变量分为两种:基本类型的变量和引用类型的变量.(javascript中同样是这样的) 基本数据类型 基本数据类型是CPU可以直接进行运算的类型. ...

  3. java中成员变量,局部变量,静态变量的辨析

    转自百度:https://baijiahao.baidu.com/s?id=1625360816541592483&wfr=spider&for=pc 1.java中成员变量,局部变量 ...

  4. java中for循环的6种写法

    有些写法上的说明写的过于武断,可能有很多不当之处,仅供参考.   package ForLoop; import java.util.ArrayList; import java.util.Itera ...

  5. Java中的变量与变量的作用域

    关于Java中的变量及变量的作用域 关于Java中的变量及变量的作用域 0. 变量的概念 在程序运行期间,系统可以为程序分配一块内存单元,用来存储各种类型的数据.系统分配的内存单元要使用一个标记符来标 ...

  6. java中static变量和方法的总结

    转自:http://blog.csdn.net/haobo920/article/details/5921621 java中static变量和方法的总结 java中一切皆是对象 一个类中对象的定义一般 ...

  7. Java中Compareable和Comparator两种比较器的区别

    Java中Compareable和Comparator两种比较器的区别 参考原文链接:https://www.cnblogs.com/ldy-blogs/p/8488138.html 1.引言 在ja ...

  8. Java中的变量,数据类型和运算符

    变量,数据类型和运算符 1.变量是一个数据存储空间的表示,它是储存数据的基本单元. 如何理解这句话,下面用一个表格可以形象的表达: 变量与房间之间的对应关系 房间名称 变量名 房间类型 变量类型 入住 ...

  9. 学习笔记--Java中的变量

    Java中的变量 /** * 关于 Java 语言当中的变量: * * 1. 什么是变量? * - 变量的本质上来说是内存空间,这块空间有(数据类型.名字.字面值) * - 变量包括三部分:数据类型. ...

随机推荐

  1. nginx通过配置empty_gif解决请求favicon 404的问题

    背景介绍 因为一些浏览器在访问网站时会默认去请求网站的favicon,但是我的网站(Tengine)上并没有这些icon图片,因此在访问日志里会出现大量的404错误,会触发一些没必要日志告警.我们可以 ...

  2. Python 的 “Magic” 方法

    在以前的文章中,我聊过了Python的 __getitem__ 和 __setitem__ 方法.这些方法被称为“魔法”方法.特殊方法或者dunger方法(译者:国内书籍用“魔法”一词较多).那么,什 ...

  3. 【刷题】BZOJ 2959 长跑

    Description 某校开展了同学们喜闻乐见的阳光长跑活动.为了能"为祖国健康工作五十年",同学们纷纷离开寝室,离开教室,离开实验室,到操场参加3000米长跑运动.一时间操场上 ...

  4. 【BZOJ4774】修路(动态规划,斯坦纳树)

    [BZOJ4774]修路(动态规划,斯坦纳树) 题面 BZOJ 题解 先讲怎么求解最小斯坦纳树. 先明白什么是斯坦纳树. 斯坦纳树可以认为是最小生成树的一般情况.最小生成树是把所有给定点都要加入到联通 ...

  5. php版本的code review软件

    phabricator, http://www.oschina.net/p/phabricator

  6. POI上传,导入excel文件到服务器1

    首先说一下所使用的POI版本3.8,需要用的的Jar包: dom4j-1.6.1.jarpoi-3.8-20120326.jarpoi-ooxml-3.8-20120326.jarpoi-ooxml- ...

  7. Educational Codeforces Round 26 D dp

    D. Round Subset time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...

  8. 【Asp.net入门3-01】使用jQuery-创建示例项目

    过去,浏览器除了显示HTML外,很少具有其他功能.因此,早期的Web应用程序需要依赖服务 器端代码来响应用户交互并执行数据操作.Web应用程序的交互依赖HTML表单元素和浏览器向服务 器发送数据的功能 ...

  9. Java入门:用户登录与注册模块1(实践项目)——分析

    任务描述:用户登录与注册是大多数软件都拥有的一个模块.请编写一个控制台程序,实现用户的登录与注册功能,并且用户能够修改自己信息. [需求分析]由于本程序是一个演示程序,用户的信息我们做简化处理,仅包括 ...

  10. P1075 质因数分解

    P1075 质因数分解 题目描述 已知正整数 n 是两个不同的质数的乘积,试求出两者中较大的那个质数. 输入输出格式 输入格式: 一个正整数 n . 输出格式: 一个正整数 p ,即较大的那个质数. ...