浅谈面向对象第二枪

        上篇说了面向对象与面向过程的区别以及Java中类和对象。接下来咱们进入正题,来谈谈Java中主要的几个关键字this,static,以及方法中参数传递的问题。
每个非静态的类中都会隐含一个this关键字的引用名称,它指向的是当前对象的引用。那么this关键字一般会什么时候使用呢?有以下情况就会使用该关键字:
1.当形参的名称与成员变量的名称相同时,为了避免形参的作用范围会覆盖掉成员变量的作用范围,此时就必须明确实用this关键字加以区分;
例如:
class Person{

private String name;

private int age;

//this:存储当前对象的引用地址.何为当前对象,看谁调用了这个方法,谁就是当前对象this的引用地址

public Person(String name,int age){

System.out.println("===Person(String name="+name+",int age="+age+")======");

 

//this.name:明确指定访问的成员变量

this.name=name;

this.age=age;

}

2.有时会使用this([参数列表]),调用本类中的构造函数,但是需要注意的是这条语句必须要作为构造函数的第一条执行一句来编写

例如:

public Person(String name){

this();//调用本类中的无参构造函数

System.out.println("===Person(String name="+name+")====");

this.name=name;

}

public Person(String name,int age){

this(name);//调用本类中含有一个String类型参数的构造函数,这种写法的语句必须作为构造函数的第 一条可执行语句

System.out.println("===Person(String name="+name+",int age="+age+")======");

this.age=age;

}

public void show(){

//this();//错误,这个写法的语句必须放在构造函数中

System.out.println("name="+name+",age="+age);

}

this.name=name;

this.age=age;

}

3.有时会用this关键字来调用本类中指定方法名的方法,但一般在习惯上都会省略掉这个关键字;

以上就是我涉及到要用到this关键字的地方,后面还会有将this作为方法参数的用法;

对于static关键而言,在一个类中用static修饰的变量就代表这个变来那个是静态的,并且它只有一份,是该类中公用的变量,用static修饰的方法就是静态方法,也叫类方法,它是独立于对象而存在的,因为静态成员都是随着类的加载而产生的,只要字节码文件一生成,那么该类成员就会被加载进内存中,并且至始至终只有一份。与此同时必须要注意的是:static修饰的的方法中不能使用super和this关键字,静态成员可以直接通过类名去访问,无须实例化对象进行访问。那么静态方法和非静态方法之间有怎样的关系呢?下面我来介绍一下:

在实例方法中可以方法静态变量和静态方法;但是,反过来则不行,因为在没有实例化对象时,静态成员就已经存在了,但是,非静态成员那时根本就不存在。所以静态方法访问非静态的就出现错误。反过来讲,因为静态成员类一加载,就会随之进入内存,所以实例化后的对象对其进行访问就是合情合理的。除此之外,还存在一点,那就是不常用的静态代码块,它一般是在一对大括号前面加上static关键字即可,静态代码块是在字节码文件被加载进JVM中自动调用的,并且它是只被调用一次,主要用来完成对静态变量的初始化。

接下来说说方法参数传递的问题。Java中在给调用的方法形参赋值是,只采用值传递的方式:基本数据类型在传递时传递的是本身值,而引用数据类型在传递时,传递的是自身引用;所以在Java中方法的参数传递是只支持值传递;在定义方法时,必须要注意形式参数的设置,数据类型可以任意,但是当实参传值是必须要保证实参与形参的数据类型保持一致,否则编译肯定通不过。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值