java中super的用法总结,下列选项中关于java中super关键字

  java中super的用法总结,下列选项中关于java中super关键字

  这篇文章给大家带来了一些关于java的知识,包括对super关键字的初步了解,super(实参)的用法,当super。不能省略等。下面就来看看吧,希望对你有帮助。

  如何解决写爬虫IP受阻的问题?立即使用。

  

super

  

super初步理解

  例1:父类和子类都是无参构造

  公共类Test01{

  公共静态void main(String[] args){

  //按照无参数构造方法创建一个对象,它一定会调用无参数构造方法!

  //对象一创建就调用构造函数,先调用父类的构造函数,再调用子类的构造函数。

  new B();

  }

  }

  A级

  public(){//无参数构造方法

  调用A的无参数构造函数!);

  }

  }

  B类扩展了A{

  public(){//无参数构造方法

  //super();//默认有一个super()通过子类调用父类的无参数构造函数;可以省略!

  System.out.println(调用B的无参数构造函数!);

  }

  }

  //结果:我们只创建B对象;因此,首先调用类A的构造函数,然后调用类B的构造函数。

  /*

  调用A的无参数构造方法!

  调用B的无参数构造方法!

  */例2:父类是有参构造、子类是无参构造

  公共类Test01{

  公共静态void main(String[] args){

  //按照无参数构造方法创建一个对象,它一定会调用无参数构造方法!

  new B();

  }

  }

  A级

  //如果一个类没有手动提供任何构造函数,系统默认会提供一个无参数的构造函数。

  //如果手工为类提供构造方法,无参数构造系统将不再提供。

  public A(int I){///参数化构造方法

  调用A的参数化构造函数!);

  }

  }

  B类扩展了A{

  public(){//无参数构造方法

  //父类是参数化构造方法,默认为super()会有问题,

  因为super()只能调用父类的无参数构造函数。

  //所以此时的super不能省略;并在写入时写入参数,

  调用父类的参数化构造方法,例如:super(100)

  超级(100);

  System.out.println(调用B的无参数构造函数!);

  }

  }

  //结果:我们只创建B对象;因此,首先调用类A的构造函数,然后调用类B的构造函数。

  /*

  调用的参数化构造方法!

  调用B的无参数构造方法!

  */例3:this()和super()不能共存(重点理解)

  公共类Test01{

  公共静态void main(String[] args){

  //按照无参数构造方法创建一个对象,它一定会调用无参数构造方法!

  new B();

  }

  }

  Class A{ //默认继承Object类,Class A扩展Object。

  //建议手工写出类的无参数构造方法。

  public(){//无参数构造方法

  //这里默认也有super(),调用Object的无参数构造方法

  调用A的无参数构造函数!);

  }

  public A(int I){///参数化构造方法

  //这里默认也有super(),调用Object的无参数构造方法

  调用A的参数化构造函数!);

  }

  }

  B类扩展了A{

  public(){//无参数构造方法

  //通过这个调用B的参数化构造方法;而且B的参数构造方法默认也有super()!

  这个(‘张三’);

  System.out.println(调用B的无参数构造函数!);

  }

  Public B(字符串名){///参数构造方法

  //默认情况下还有super(),用来调用的无参数构造。

  System.out.println(调用B的参数化构造函数!);

  }

  }

  //最终结果

  /*

  调用A的无参数构造方法!

  调用B的参数化构造方法!

  调用B的无参数构造方法!

  */例4:套娃例题理解

  公共类超级测试02{

  公共静态void main(String[] args){

  new C();

  }

  }

  //-对于父类A,将实际调用祖先对象类的无参数构造。

  /*

  类对象{

  公共对象(){

  }

  }

  */

  A类{//A类扩展对象

  Public () {//-最后一个调用的;先结束!

  system . out . println(“1”);//1

  }

  }

  B类扩展了A{

  公共B(){

  system . out . println(“2”);

  }

  公共B(字符串名称){

  //super();默认情况下。

  system . out . println(“3”);//2

  }

  }

  C类扩展了B{

  Public () {//-第一个调用的;终于结束了!

  这个(‘张三’);

  System.out .普里

  公共c(字符串名称){

  这个(名字,20);

  系统。出去。println( 5 );//4

  }

  公共c C(字符串名称,整数){

  超级(名);

  系统。出去。println( 6 );//3

  }

  }

super(实参)的用法

  公共类超级测试03{

  公共静态void main(String[] args){

  信用账户CA1=新信用账户();//调用无参构造

  系统。出去。println(CA1。getactno(),

   ca1.getBalance(), ca1。get credit());//空,0.0,0.0

  信用账户Ca2=新信用账户( 1111 ,10000.0,0.999);//调用有参构造

  系统。出去。println(Ca2。getactno(),

   ca2.getBalance(), ca2。get credit());//1111,10000.0,0.999

  }

  }

  //账户

  类别帐户扩展对象{

  //属性

  私有字符串actno

  私人双平衡;

  //构造方法

  公共帐户(){ //对于无参构造,默认会调用super();并且给实列变量赋上缺省初始值

  //super();

  //这个。actno=null

  //这个。余额=0.0;

  }

  公共账户(字符串actno,双余额){

  //super();

  this.actno=actno

  this.balance=余额

  }

  //setter和吸气剂

  public void setActno(String actno){

  this.actno=actno

  }

  公共字符串getActno(){

  返回actno

  }

  公共无效setBalance(双余额){

  this.balance=余额

  }

  public double getBalance(){

  返回余额;

  }

  }

  //信用账户

  类别信用账户扩展帐户{

  //属性:信誉度(诚信值)

  //子类特有的一个特征,父类没有。

  私人双重信用;

  //重点在这里-写上有参构造方法

  //分析以下程序是否存在编译错误?

  公共信用账户(字符串actno,双余额,双信用){

  //直接访问不行,继承过来的私有的属性,只能通过作曲者和吸气剂方法进行访问

  /*

  this.actno=actno

  this.balance=余额

  */

  //以上两行代码在恰当的位置,正好可以使用:super(actno,balance);

  //通过子类的构造方法调用父类的构造方法。

  超级(actno,balance);//调用父类的构造方法

  this.credit=信用

  }

  //提供无参数的构造方法

  公共信用帐户(){ //对于无参构造,默认会调用super();并且给实列变量赋上缺省初始值

  //super();

  //这个。信用=0.0;

  }

  //setter和吸气剂方法

  公共作废setCredit(双重信用){

  this.credit=信用

  }

  public double getCredit(){

  返还信用;

  }

  }内存图(重点掌握)

  

super.使用

  公共类超级测试04{

  公共静态void main(String[] args){

  Vip v=新Vip(张三);

  五、购物();

  }

  }

  类别客户{

  字符串名称;

  公共客户(){}

  公共客户(字符串名称){

  super();

  this.name=name

  }

  }

  贵宾级扩展客户{

  公共Vip(){}

  公共Vip(字符串名称){

  超级(名);

  }

  //超级和这都不能出现在静态方法中。

  公共空的购物(){

  //这个表示当前对象。

  System.out.println(this.name 正在购物!);

  //超级表示的是当前对象的父类型特征(超级是这指向的那个对象中的一块空间。)

  System.out.println(super.name正在购物!);

  System.out.println(name 正在购物!);

  }

  }内存图

  

super.什么时候不能省略(掌握)

  公共类超级测试05{

  公共静态void main(String[] args){

  Vip v=新Vip(张三);

  五、购物();

  }

  }

  类别客户{

  字符串名称;//- 父类中也有名字

  公共客户(){}

  公共客户(字符串名称){

  super();

  this.name=name

  }

  公共void doSome(){

  系统。出去。println(这个。名字叫“做一些!”);

  System.out.println(name do some!);

  //错误:找不到符号-对象里面没有名字

  //系统。出去。println(超级。名字叫“做一些!”);

  }

  }

  贵宾级扩展客户{

  //假设子类也有一个同名属性

  //java中允许在子类中出现和父类一样的同名变量/同名属性。

  字符串名称;//- 子类中也有名字

  公共Vip(){

  }

  公共Vip(字符串名称){

  超级(名);//给父类初始化了,子类并没有进行初始化是空

  //这个。name=null

  }

  公共空的购物(){

  /*

  爪哇岛是怎么来区分子类和父类的同名属性的?

  这个。名称:当前对象的名字属性

  超级名称:当前对象的父类型特征中的名字属性。

  */

  //- 默认访问的是当前对象的姓名;加极好的访问的是父类的名字

  System.out.println(this.name 正在购物!);//null正在购物

  System.out.println(super.name正在购物!);//张三正在购物

  System.out.println(name 正在购物!);//null正在购物

  }

  }内存图

  

  

super使用时后面必须有一个.

  公共类超级测试06 {

  //实例方法

  公共void doSome(){

  系统。出去。println(这个);//实际上调用的是this.toString()方法

  //输出"引用"的时候,会自动调用引用的toString()方法。

  //系统。出去。println(这个。tostring());

  //编译错误:需要.

  //系统。出去。println(超级);

  }

  //这个和极好的不能使用在静电静态方法中。

  /*

  public static void doOther(){

  系统。出去。println(这个);

  系统。出去。println(超级。XXX);

  }

  */

  //静态方法,主方法

  公共静态void main(String[] args){

  super test 06 ST=new super test 06();

  ST . do some();

  }

  }

使用super调用父类方法

  公共类超级测试07{

  公共静态void main(String[] args){

  /*

  猫步!

  猫步!

  动物行动!

  */

  Cat c=new Cat();

  c。yidong();

  }

  }

  动物类{

  public void move(){ //父中有

  System.out.println(动物移动!);

  }

  }

  类别猫扩展动物{

  //对移动进行重写。

  public void move(){ //子中也有

  System.out.println(Cat move!);

  }

  //在子类的实例方法当中调用父类的实例方法

  public void yiDong(){

  这个。move();//猫动!-调用自己的

  move();//猫动!-调用自己的

  //超级。不仅可以访问属性,也可以访问方法。

  超级棒。move();//动物移动!-调用父类的

  }

  }推荐学习: 《java视频教程》 以上就是爪哇中极好的关键字的用法详解的详细内容,更多请关注我们其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: