发表于: 2020-09-29 23:29:31

1 1490


今天完成的事情:

遇到的问题:

this这个关键字,相当于普通话里的“” 

小明说 “我吃了” 这个时候,“” 代表小明 
小红说 “我吃了” 这个时候,“” 代表小红 
""代表当前人物 

this这个关键字,相当于普通话里的“” 
this即代表当前对象

源码是这个样子的,我想创建一个类,从类中来继承。因为hero的属性都是通用的。但是它报错了,The method showAddressInMemory() is undefined for the type Hero。我在网上搜了一下,也没搜出什么来。问了师兄,师兄说你的

Hero garen =  new Hero();这是在Hero类中新建一个的对象,所以它只会访问hero类中的方法,Test13_cur_obj类中的方法并不会访问。这是基本常识了,还是不太了解,需要多多练习。






java 静态方法和实例方法的区别(参考网址:https://www.cnblogs.com/shenliang123/archive/2011/10/27/2226923.html)

静态方法和实例方法的区别主要体现在两个方面:

 

外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。

 

静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。

一开始我是把两个代码放在一起运行,然后出现报错

看来两个静态方法不能放在同一个类里面,必须分开。


本例其实可以概括成一句话:静态方法只能访问静态成员,实例方法可以访问静态和实例成员。之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。同样,因为实例方法可以访问实例成员变量,如果允许静态方法调用实例方法,将间接地允许它使用实例成员变量,所以它也不能调用实例方法。基于同样的道理,静态方法中也不能使用关键字this。

 main()方法是一个典型的静态方法,它同样遵循一般静态方法的规则,所以它可以由系统在创建对象之前就调用。

Java中的static(参考网址:https://www.cnblogs.com/dolphin0520/p/3799052.html):

  一.static关键字的用途

  二.static关键字的误区

static关键字的基本作用:方便在没有创建对象的情况下来进行调用(方法/变量)。

1.   static方法一般称作静态方法(可以参考上面静态方法的内容

2. static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。

static成员变量的初始化顺序按照定义的顺序进行初始化。


2.static关键字的误区

1.static关键字会改变类中成员的访问权限吗?

  有些初学的朋友会将java中的static与C/C++中的static关键字的功能混淆了。在这里只需要记住一点:与C/C++中的static不同,Java中的static关键字不会影响到变量或者方法的作用域。在Java中能够影响到访问权限的只有private、public、protected(包括包访问权限)这几个关键字。


提示错误"Person.age 不可视",这说明static关键字并不会改变变量和方法的访问权限。

2.能通过this访问静态成员变量吗?

  虽然对于静态方法来说没有this,那么在非静态方法中能够通过this访问静态成员变量吗?


这里面主要考察队this和static的理解。this代表什么?this代表当前对象,那么通过new Test16()来调用printValue的话,当前对象就是通过new Test16()生成的对象。而static变量是被对象所享有的,因此在printValue中的this.value的值毫无疑问是33。在printValue方法内部的value是局部变量,根本不可能与this关联,所以输出结果是33。在这里永远要记住一点:静态成员变量虽然独立于对象,但是不代表不可以通过对象去访问,所有的静态方法和静态变量都可以通过对象访问(只要访问权限足够)。 

3.static能作用于局部变量么?

  在C/C++中static是可以作用域局部变量的,但是在Java中切记:static是不允许用来修饰局部变量。不要问为什么,这是Java语法的规定。

Java中的super关键字是一个引用变量,用于引用直接父类对象。

每当创建子类的实例时,父类的实例被隐式创建,由super关键字引用变量引用。

java super关键字的用法如下:

  • super可以用来引用直接父类的实例变量。
  • super可以用来调用直接父类方法。
  • super()可以用于调用直接父类构造函数。

1. super用于引用直接父类实例变量

2. 通过 super 来调用父类方法

super关键字也可以用于调用父类方法。 如果子类包含与父类相同的方法,则应使用super关键字指定父类的方法。 换句话说,如果方法被覆盖就可以使用 super 关键字来指定父类方法。

3. 使用 super 来调用父类构造函数

super关键字也可以用于调用父类构造函数。



明天计划的事情:学习接口和继承,数字与字符串,日期,复习之前学过的内容。分析this   super关键字的区别





收获:了解this  和super关键字。和static关键字,对Java的了解更深了







返回列表 返回列表
评论

    分享到