当前位置: 首页 > news >正文

金湖县网站建设怎么上百度搜索

金湖县网站建设,怎么上百度搜索,合肥做网站公司哪家好,专业做蛋糕的网站一、this关键字this 关键字是 Java 常用的关键字,可用于任何实例方法内指向当前对象,也可指向对其调用当前方法的对象,或者在需要当前类型对象引用时使用。(1)this.属性名this修饰的变量用于指代成员变量方法的形参如果…

一、this关键字

this 关键字是 Java 常用的关键字,可用于任何实例方法内指向当前对象,也可指向对其调用当前方法的对象,或者在需要当前类型对象引用时使用

(1)this.属性名

this修饰的变量用于指代成员变量

方法的形参如果与成员变量同名,不带this修饰的变量指的是形参

方法的形参如果与成员变量不同名,不带this修饰的变量指的是成员变量

在 Teacher 类的构造方法中使用了 this 关键字对属性 name和salary 赋值,this 表示当前对象this.name=name语句 表示一个赋值语句:

  • 等号左边的 this.name 是指当前对象具有的变量 name

  • 等号右边的 name 表示参数传递过来的数值

如果方法里有个局部变量成员变量同名,但程序又需要在该方法里访问这个被覆盖的成员变量,则必须使用 this 前缀。例如:上述的name、salary是函数的参数就要加上this才可以表示当前类的成员变量,而age不是参数,所以直接使用age就能代表成员变量!

当一个类的属性(成员变量)名与访问该属性的方法参数名相同时,则需要使用 this 关键字来访问类中的属性,以区分类的属性和方法中的参数。

(2)this.方法名()

最大的作用就是:类中一个方法,访问该类里的另一个方法或实例变量

假设定义了一个 Student 类,这个 Student 对象的 study( ) 方法需要调用它的 readWork( ) 方法和 writeWork() 方法,Student 类的代码如下所示:

@Data
public class Student {private String name;public Student(String name) {this.name = name;}public void readWork() {System.out.println(this.name + "正在执行readWork方法");}public void writeWork() {System.out.println(this.name + "正在执行writeWork方法");}public void study() {// 方法一Student s = new Student("Tom");s.readWork();s.writeWork();// 方法二this.readWork();this.writeWork();System.out.println(this.name + "正在执行study()方法");}
}

测试类:

public class demo {public static void main(String[] args) {Student s = new Student("harmony");s.study();}
}

运行结果:

在 study()方法中调用 readWork()、writeWork() 方法时是否一定需要一个 Student 对象?

答案是肯定的,因为没有使用 static 修饰的成员变量和方法都必须使用对象来调用

是否一定需要重新创建一个 Student 对象?

不一定,因为当程序调用 study() 方法时,一定会提供一个 Student 对象,这样就可以直接使用这个已经存在的 Student 对象,而无须重新创建新的 Student 对象了。因此需要在 study() 方法中获得调用该方法的对象,通过 this 关键字就可以满足这个要求

总的来说:this 可以代表任何对象,当 this 出现在某个方法体中时,它所代表的对象是不确定的,但它的类型是确定的,它所代表的只能是当前类的实例。只有当这个方法被调用时,它所代表的对象才被确定下来,谁在调用这个方法,this 就代表谁!!!

例如,我们的study() 可以这么写:

public void study() {this.readWork();this.writeWork();System.out.println(this.name + "正在执行study()方法");
}

但是通常来说,在Java中,一个方法访问该类中定义的其他方法、成员变量时加不加 this 前缀的效果是完全一样的!

也就是说,我们完全可以这样写:

public void study() {readWork();writeWork();System.out.println(this.name + "正在执行study()方法");
}

注意事项

对于 static 修饰的方法而言,可以使用类来直接调用该方法,如果在 static 修饰的方法中使用 this 关键字,则这个关键字就无法指向合适的对象。所以,static 修饰的方法中不能使用 this 引用。并且 Java 语法规定,静态成员不能直接访问非静态成员

省略 this 前缀只是一种假象,虽然程序员省略了调用 readWork() 方法之前的 this,但实际上这个 this 依然是存在的!!!

(3)this( )访问构造方法

this( ) 用来访问本类的构造方法;括号中可以有参数,如果有参数就是调用指定的有参构造方法。

public class Student {private String name;private Integer age;// 无参构造方法(没有参数的构造方法)public Student() {this("harmony", 18);}// 有参构造方法public Student(String name, int age) {this.name = name;this.age = age;}public void print() {System.out.println("姓名:" + name);System.out.println("年龄:" + age);}public static void main(String[] args) {Student stu1 = new Student();stu1.print();System.out.println("============");Student stu2 = new Student("magic",20);stu2.print();}
}

运行结果:

注意事项

  • this( ) 不能在普通方法中使用,只能写在构造方法中。

  • 在构造方法中使用时,必须是第一条语句

二、super关键字

由于子类不能继承父类的构造方法,因此,如果要调用父类的构造方法,可以使用 super 关键字。super 可以用来访问父类的构造方法、普通方法和属性

功能

  • 在子类的构造方法中显式的调用父类构造方法

  • 访问父类的成员方法变量

(1)super调用父类构造方法

super 关键字可以在子类的构造方法中显式地调用父类的构造方法!

super( ) 必须是在子类构造方法的方法体的第一行

例子一

我们先定义一个父类Father

public class Father {public Father(String name) {}
}

再定义一个子类Son

public class Son extends Father {}

但是,这样子写是有问题的!这是因为, JVM 默认给 Son 类加了一个无参构造方法,而在这个方法中默认调用了 super(),但是 Father 类中并不存在该构造方法,所以编译器会报红!

如果一个类中没有写任何的构造方法,JVM 会生成一个默认的无参构造方法。
但是,如果有有参的构造方法,JVM 就不会生成无参构造方法了,需要自己定义。

父类只有一个有参构造函数,而没有无参构造函数,则子类的构造函数必须显式地调用父类的有参构造函数,否则编译器会报错!

子类Son必须要这样:

public class Son extends Father {public Son(String name) {super(name);}
}

super 可以用来直接调用父类中的构造方法,使编写代码也更加简洁方便。

例子二

// 父类
public class Father {public Father() {System.out.println("无参构造函数!");}
}// 子类
public class Son extends Father {private String name;public Son(String name) {this.name = name;}public static void main(String[] args) {Son s = new Son("Harmony");}
}

运行结果:

我们在main函数中什么也没有输出,但是在控制台上看到了打印。说明编译器会自动在子类构造方法的第一句加上super(),来调用父类无参构造方法,必须写在子类构造方法的第一句,也可以省略不写。

(2)super调用父类构造方法

未完待续...

三、super和this的区别

this 指的是当前对象的引用,super 是当前对象的父对象的引用。

this的用法小结

  • this.属性名:表示当前对象的属性

  • this.方法名(参数):表示调用当前对象的方法

当局部变量和成员变量发生冲突时,使用this.进行区分。

super的用法小结

  • super.父类属性名:调用父类中的属性

  • super.父类方法名:调用父类中的方法

  • super():调用父类的无参构造方法

  • super(参数):调用父类的有参构造方法

如果构造方法的第一行代码不是 this() 和 super(),则系统会默认添加 super()

http://www.hrbkazy.com/news/16031.html

相关文章:

  • 高校网络网站建设意义及措施湖南seo网站开发
  • 兰州做网站价格网站流量统计分析报告
  • 泉州网站建设武汉seo网站推广培训
  • 盱眙在仕德伟做网站的有几家百度最新财报
  • 网站开发图标下载抖音关键词排名
  • 荥阳网站推广seo引擎优化怎么做
  • 微信网站开发制作公司搜索引擎营销有哪些
  • 邯郸做移动网站的公司快速网络推广
  • 做天猫转让网站友情链接交换方式有哪些
  • 商会网站制作武汉电脑培训学校有哪些
  • WordPress小说漫画主题国外独立站seo外链平台
  • 惠州做网站的公司有哪些seo人员培训
  • 创意网站建设设计seo整站优化推广
  • 商贸信息网站互联网项目推广
  • 网站做加QQ群链接百度网站禁止访问怎么解除
  • 个人网站备案网址导航制作网页用什么软件
  • 重庆网站seo公司哪家好海南seo代理加盟供应商
  • 中国建设网站培训通知想建立自己的网站怎么建立
  • 如何删除网站的信息吗bt种子磁力搜索
  • 深圳 手机网站建设免费的网络推广渠道
  • 怎么用flash做游戏下载网站快速排名刷
  • 怎样看出一个网站是那个公司做的nba最新交易一览表
  • 做1688网站运营工资怎么样福州网站排名推广
  • 唐山如何做百度的网站品牌宣传策划公司
  • 高密做网站哪家好代理求几个微信推广平台
  • 网站首页怎么做全屏swf免费个人网站源码
  • 广州做网站的网络公司我要推广
  • 门户网站建设情况seo关键词排名网络公司
  • 联系人网站设计百度识别图片找图
  • 色流网站如何做临沂网站建设方案服务