java学习笔记1——面向对象的一些性质

   statics 是一个特殊关键字,可用于修饰方法、Field等成员。Filed这个东西又可以翻译成成员变量。static修饰的成员表面它属于这个类本身,儿不属于该类的丹哥实例,因为通常把static修饰的Filed和方法也称为类Filed、类方法。不用static修饰的普通方法、Field则属于该类的单个实例,而不属于该类。通常把不适用static修饰的成员变量和方法也称为实例成员变量、实例方法。

       static真正的作用是区分Field、方法、内部类、初始化块这四种成员到底属于类本身还是属于实例。在类中定义的成员,有static修饰的成员属于类本身,没有static修饰的成员属于该类的实例。

       类的构造器是有返回值的,当我们用new来调用构造器时,构造器返回该类的实例。不能在构造器里显示使用return来返回当前类的对象,因为构造器的返回值是隐式的。

        java中,Person p = new Person();这行代码创建了一个Person实例,也称为Person对象,这个对象被赋给p变量。这行代码产生了两个东西,一个是p变量,一个是Person对象。类也是一种引用数据类型,程序中定义的Person类型的变量实际上是一种引用,它被存放在栈内存中,只想实际的Person对象。而真正的Person对象则存放在堆内存中。
栈内存中引用变量并未真正存储对象的成员变量数据,对象的成员变量数据实际存放在堆内存里,而引用变量只是指向该堆内存里的对象。引用变量和C中的指针很像。它们都是存储一个地址值,通过这个地址来引用到实际对象。实际上,java中的引用就是C中的指针,只是java把指针封装起来,避免开发者进行繁琐的指针操作。
  
      如果堆内存里的对象没有任何变量指向该对象,那么程序将无法再访问该对象,这个对象也就变成了垃圾,java的垃圾回收机制将回收该对象,释放该对象所占的内存区。如果希望通知垃圾回收机制回收某个对象,只需切断该对象的所有引用变量和它之间的关系即可,也就是把这些引用变量赋值为null。

     this引用指向调用该方法的对象,其最大作用是让类中一个方法,访问该类里的另一个饭国发或Field。
     例如:
public class Dog{
public void jump(){
System.out.println("正在执行jump方法");
}

public void run(){
this.jump();     //java中允许对象的一个成员直接调用另一个成员,可以省略this前缀。
System.out.println("正在执行run方法");
}
}
     特别的,static修饰的方法属于类,不属于对象,因此调用static修饰的方法的主调总是类本身,如果允许在static修饰的方法中出现this引用,那将导致this无法引用有效对象,导致变异错误。
      static修饰的成员属于类本身,不属于该类的实例,那就不应允许使用类的实例去调用static修饰的成员变量和方法。例如。
public lcass ThisInConstructor{
public int foo;
public ThisInConstructor(){
int foo = 0;                                   //大部分时候,普通方法访问其他方法、成员变量时无需用this,但如果方法里有个句柄变量
this.foo = 6;                                 //和成员变量同名时,但程序又需要在该方法里访问这个被覆盖的成员变量,则必须使用this
}                                                             //印象最深的就是get和set方法
public static void main(String[] args){
//所有使用ThisInConstructor创建的对象的foo 成员变量都将被设为6
//要在静态方法中访问另一个普通方法,只能重新创建一个对象。此处重新创建一个对象来调用info方法
System.out.println(new ThisInConstructor().foo );
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值