super关键字与this关键字

super关键字语法:

super.成员变量

super.成员方法([参数1,参数2])

super调用父类构造方法的代码必须位于子类构造方法的第一行,并且只能出现一次。

this关键字:

通过this关键字可以明确地访问一个的成员变量,解决与局部变量的命名冲突问题。

this调用类的构造方法时,应注意以下三点:

1.只能在构造方法中使用this调用其他的构造方法,不能在成员方法中使用。

2.在构造方法中,使用this调用构造方法的语句必须位于第一行,且只能出现一次。

3.不能在一个类的两个构造方法中使用this互相调用。

super关键字与this关键字的区别:

this通常指当前对象, super则指父类的。当想要引用当前对象的某个方法或当前对象的某个成员,就可以使用this来实现。当然, this的另一个用途是调用当前对象的另一个构造方法。
  (1 ) this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this。
  (2 )仅在类的构造方法中可以用"this (参数列表)”调用另一个构造方法,别的地方不能这么用。
  (3)可以用"this.成员变量”的方式来引|用成员变量。 (适用于方法中局部变量和成员变量同名的情况。)(4) "super(参数列表)” 是在子类构造方法中调用父类的构造方法时的使用法, 并且此句必须在构造方法的第一行。
  (5) super成员变量名可用于引用父类的成员变量。
  (6)super可用来引用被子类屏蔽的成员变量和成员方法。不过super是用在子类中,目的是访问直接父类中被屏蔽的成员,注意是直接父类。

原文地址:https://www.cnblogs.com/black-lm/p/9096716.html

时间: 2024-10-08 18:54:37

super关键字与this关键字的相关文章

[java]final关键字、finally关键字与finalize()方法

final关键字: final关键字通常指的是“无法改变的”,使用“无法改变”这样修饰可能出于两个原因:设计或者效率. final可以修饰变量.方法和类. 一.final变量 一个既是static又是final的域只占据一段不能改变的存储空间. 当对对象引用而不是基本类型运用final修饰时,其含义会有一点迷惑.对于基本类型,final使数值恒定不变.而用于对象引用,final使引用恒定不变.一旦引用被初始化指向一个对象,就无法再把它改为指向另一个对象.然而,对象自身却是可以修改的,java并未

PHP static 关键字和 self 关键字实例化的区别

在实例化时,static 关键字类似于 self 关键字,但 static 关键字指的是被调用的类,而 self 关键字指的是包含类. 这样说可能不太好理解,接下来举一个例子. 首先创建一个超类 DomainObject ,该类包含功能可被其扩展类共用,其次创建一个子类 Document . 代码如下: abstract class DomainObject { public static function create() { return new self(); } } class Docu

SQLSERVER中的ALL、PERCENT、CUBE关键字、ROLLUP关键字和GROUPING函数

原文:SQLSERVER中的ALL.PERCENT.CUBE关键字.ROLLUP关键字和GROUPING函数 SQLSERVER中的ALL.PERCENT.CUBE关键字.ROLLUP关键字和GROUPING函数 先来创建一个测试表 1 USE [tempdb] 2 GO 3 4 CREATE TABLE #temptb(id INT ,NAME VARCHAR(200)) 5 GO 6 7 INSERT INTO [#temptb] ( [id], [NAME] ) 8 SELECT 1,'中

python保留关键字和常用关键字

python保留关键字和常用关键字如下: 上图是python3中的关键字,python2.7中的关键字部分会有区别,具体在自己打印输出查看: import keyword print ' '.join(keyword.kwlist) lambda  用于匿名函数中 assert 断言语句,常用与调试 raise    用于异常处理 yield    连续输出,和print都是输出,不同在于输出次数 nonlocal   python3.0中有,表示使用使用外层变量,和global对比去看

PHP static关键字和self关键字的区别

在PHP的一个类中,带有static关键字的方法和属性被称为静态方法和静态属性,这样的方法和属性可以通过类直接访问,而不需要通过类对应的实例来进行访问,在类中访问静态变量以及静态属性的时候,可以使用self关键字和static关键字,两种访问方式看起来似乎没有区别,但是实际上还是不一样的 abstract class Person { public static $_className = 'Person'; public static function getIntro() { return

参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

在Python中定义函数,可以用必选参数.默认参数.可变参数.关键字参数和命名关键字参数,这5种参数都可以组合使用.但是请注意,参数定义的顺序必须是:必选参数.默认参数.可变参数.命名关键字参数和关键字参数. Python的函数具有非常灵活的参数形态,既可以实现简单的调用,又可以传入非常复杂的参数. 默认参数一定要用不可变对象,如果是可变对象,程序运行时会有逻辑错误! 要注意定义可变参数和关键字参数的语法: *args是可变参数,args接收的是一个tuple: **kw是关键字参数,kw接收的

let 关键字和 const 关键字

在 ES6 中,提供了 let 关键字和 const 关键字. let 的声明方式与 var 相同,用 let 来代替 var 来声明变量,就可以把变量限制在当前代码块中. 使用 const 声明的是常量,其值一旦被设定便不可被更改. let 允许你声明一个作用域被限制在块级中的变量.语句或者表达式.与var关键字不同的是,它声明的变量只能是全局或者整个函数块的. let 语法: let var1 [= value1] [, var2 [= value2]] [, ..., varN [= va

C#:ref关键字和out关键字的区别

1.在不使用关键字(比如ref关键字.out关键字等)修饰函数的情况下,大部分函数的参数是以值传递的方式,也就是说,“调用函数”在使用参数(比如myNumber)时,是把该参数复制多一份,然后将其传递给“被调用函数”使用,言外之意就是对“被调用函数”中此变量的任何修改都不影响“调用函数”中原有参数的值. 2.ref关键字和out关键字的使用,就可以改变原有参数的值.方法定义和调用方法都必须显式使用. 使用方式就不细讲了,直接说说它们的区别: 1) ref关键字:传递到 ref 参数的参数必须初始

使用 Object.create 创建对象,super 关键字,class 关键字

ECMAScript 5 中引入了一个新方法:Object.create().可以调用这个方法来创建一个新对象.新对象的原型就是调用 create 方法时传入的第一个参数: var a = {a: 1}; // a ---> Object.prototype ---> null var b = Object.create(a); // b ---> a ---> Object.prototype ---> null console.log(b.a); // 1 (继承而来)