superjava,superjava关键字

本文目录一览:

java中Super是什么意思?

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

super是引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super.变量名 super.成员函数据名。

JAVA中的super代表什么意思??

构造器和方法,都用关键字super指向超类,但是用的方法不一样。

方法用这个关键字去执行被重载的超类中的方法。

看下面的例子:

class

Mammal

{

void

getBirthInfo()

{

System.out.println(“born

alive.”);

}

}

class

Platypus

extends

Mammal

{

void

getBirthInfo()

{

System.out.println(“hatch

from

eggs”);

System.out.print(“a

mammal

normally

is

“);

super.getBirthInfo();

}

}

在上面的例子中,使用super.getBirthInfo()去调用超类Mammal中被重载的方法。

构造器使用super去调用超类中的构造器。而且这行代码必须放在第一行,否则编译将出错。看下面的例子:

public

class

SuperClassDemo

{

SuperClassDemo()

{}

}

class

Child

extends

SuperClassDemo

{

Child()

{

super();

}

}

在上面这个没有什麽实际意义的例子中,构造器

Child()包含了

super,它的作用就是将超类中的构造器SuperClassDemo实例化,幷加到

Child类中。

回答完毕,不知道你明白了没有

Java中super是什么意思?

super在java的子类中指代父类引用

java中,super的几种用法:

1、子类的构造函数如果要引用super的话,必须把super放在函数的首位

class Base {

    Base() {

        System.out.println(“Base”);

    }

}

public class Checket extends Base {

    Checket() {

        super();//调用父类的构造方法,一定要放在方法的首个语句

        System.out.println(“Checket”);

    }

 

    public static void main(String argv[]) {

        Checket c = new Checket();

    }

}

如果想用super继承父类构造的方法,但是没有放在第一行的话,那么在super之前的语句,肯定是为了满足自己想要完成某些行为的语句,但是又用了super继承父类的构造方法。那么以前所做的修改就都回到以前了,就是说又成了父类的构造方法了。

2、在Java中,有时还会遇到子类中的成员变量或方法与超类(有时也称父类)中的成员变量或方法同名。因为子类中的成员变量或方法名优先级高,所以子类中的同名成员变量或方法就隐藏了超类的成员变量或方法,但是我们如果想要使用超类中的这个成员变量或方法,就需要用到super.

class Country {

    String name;

 

    void value() {

        name = “China”;

    }

}

 

class City extends Country {

    String name;

 

    void value() {

        name = “Hefei”;

        super.value();//不调用此方法时,super.name返回的是父类的成员变量的值null

        System.out.println(name);

        System.out.println(super.name);

    }

 

    public static void main(String[] args) {

        City c=new City();

        c.value();

    }

}

为了在子类中引用父类中的成员变量name和方法value(),在代码中使用了super、super.name和super.value(),若不调用super.value()时,super.name返回父类成员变量默认值null,调用此方法时,super.value()方法把成员变量name赋值为China,再利用super.name调用父类的成员变量的值。

另外,要注意的是super.name调用的是成员变量的

class Country {

    String name=”xianfan”;

 

    String value(String name) {

        name = “China”;

        return name;

    }

}

 

class City extends Country {

    String name;

 

    String value(String name) {

        name = “Hefei”;

        super.value(“失败”);//不调用此方法时,super.name返回的是父类的成员变量的值null

        System.out.println(name);

        System.out.println(super.name);

        return name;

    }

 

    public static void main(String[] args) {

        City c=new City();

        c.value(“成功”);

    }

}

结果为:Hefei

xianfan

此时,super.name返回的值是父类成员变量的值xianfan,而此时的super.value()方法是不起作用的。

3、用super直接传递参数:

class Person {

    public static void prt(String s) {

        System.out.println(s);

    }

 

    Person() {

        prt(“A Person.”);

    }

 

    Person(String name) {

        prt(“A person name is:” + name);

    }

}

 

public class Chinese extends Person {

    Chinese() {

        super(); // 调用父类构造函数(1)

        prt(“A chinese.”);// (4)

    }

 

    Chinese(String name) {

        super(name);// 调用父类具有相同形参的构造函数(2)

        prt(“his name is:” + name);

    }

 

    Chinese(String name, int age) {

        this(name);// 调用当前具有相同形参的构造函数(3)

        prt(“his age is:” + age);

    }

 

    public static void main(String[] args) {

        Chinese cn = new Chinese();

        cn = new Chinese(“kevin”);

        cn = new Chinese(“kevin”, 22);

    }

}

结果为:A Person.

A chinese.

A person name is:kevin

his name is:kevin

A person name is:kevin

his name is:kevin

his age is:22

在这段程序中,this和super不再是像以前那样用“.”连接一个方法或成员,而是直接在其后跟上适当的参数,因此它的意义也就有了变化。super后加参数的是用来调用父类中具有相同形式的构造函数,如1和2处。this后加参数则调用的是当前具有相同参数的构造函数,如3处。当然,在Chinese的各个重载构造函数中,this和super在一般方法中的各种用法也仍可使用,比如4处,你可以将它替换为“this.prt”(因为它继承了父类中的那个方法)或者是“super.prt”(因为它是父类中的方法且可被子类访问),它照样可以正确运行。

java 中super 的用法及意义

java中的super指的就是父类(super class)\x0d\x0a例:B继承A\x0d\x0aA类\x0d\x0aclass A {\x0d\x0a private String astr;\x0d\x0a private String bstr;\x0d\x0a public A(string astr, string bstr) {\x0d\x0a this.astr = astr; //this指的是本类,在这里就是A\x0d\x0a this.bstr = bstr;\x0d\x0a }\x0d\x0a \x0d\x0apublic String getAstr() {\x0d\x0a return this.astr;\x0d\x0a}\x0d\x0a\x0d\x0apublic String getBstr() {\x0d\x0a return this.bstr;\x0d\x0a}\x0d\x0a}\x0d\x0a\x0d\x0aB类\x0d\x0aclass B extends A {\x0d\x0a private String aa;\x0d\x0a private String bb;\x0d\x0a \x0d\x0a public B(String aa, String bb) {\x0d\x0a super(aa, bb); //这里就调用了父类的构造方法,给父类的super.astr,super.bstr(super.astr也就是父类的astr变量,super.bstr同理)两个变量赋值了,而不是给this.aa,this.bb(this.aa可以理解为本类的aa变量,this.bb同理)赋值\x0d\x0a // this.aa = aa; \x0d\x0a // this.bb = bb;\x0d\x0a } \x0d\x0a \x0d\x0apuplic String getAA() {\x0d\x0a return this.aa;\x0d\x0a}\x0d\x0a\x0d\x0apublic String getBB() {\x0d\x0a return this.bb;\x0d\x0a}\x0d\x0a}\x0d\x0a\x0d\x0a测试类\x0d\x0apublic class Test {\x0d\x0a public static void main(String[] args) {\x0d\x0a B b = new B(“aabb”, “ccdd”); // 调用B的构造方法,给super.astr,super.bstr赋值了\x0d\x0a System.out.println(b.getAa()); // null 没有被赋值\x0d\x0a System.out.println(b.getBb()); // null\x0d\x0a System.out.println(b.getAstr()); // aabb 调用父类的方法,返回super.astr的值\x0d\x0a System.out.println(b.getAstr()); // ccdd 调用父类的方法,返回super.bstr的值\x0d\x0a }\x0d\x0a}

java中的super()是什么

要说super就先要说this。

“this”,作为一个特殊的关键字,它的规则如下:

1。可以表示构造函数传递。this(a,b)表示调用另外一个构造函数。这里面的this就是一个特殊语法,不是变量,没有什么类型。

2。可以在一个类的非static成员内部使用,表示当前这个对象。此时,this就是一个final的普通变量,它有静态类型,就是这个类C本身;它有动态类型,就是当前这个对象的类型。你可以对它调用成员函数,把它传递给别的函数,等等等等。只要一个C类型的final变量可以出现的地方,它就可以出现。

“super”。它和”this”类似,但是也有不同的地方。

1。表示调用父类的构造函数。也是一个特殊语法,不是变量,没有什么类型。

2。可以在一个类的非static成员内部使用。比如super.method()。

但是,注意,这个super.method()只是长得跟some_var.method()一样,一个语法糖而已。实质上,”super”根本不是一个变量。

为什么不是?因为如果是就坏了。java里面有一个金科玉律:任何public非static函数的调用都是多态的。

所以,如果super是个变量,也指向当前对象,那么,不管super的静态类型是什么super.method()必然调用的是子类的那个版本,而不会是我们期望的,静态地选择父类的那个版本。

所以,你只要把super.xxx看成一个特殊的语法,比如理解为“super::xxx”就好了。

既然super不是一个变量,那么不能把它象一个普通变量那样”==”,或者传递给某个函数就看起来很正常了,是么?何况,你其实也用不着它,有this你这些要求就都可以办到了。

3。super的另外一个作用是调用父类的protected函数。只有通过”super”这个魔咒,我们才能操作父类的protected成员,别无它法。

JAVA中的super和this的用法和作用

super是调用父类的构造函数

使用super调用有一些限制条件,不能在super调用中使用实例变量作为参数.

而且在构造函数中,调用必须写在继承类的构造函数定义的第一行,不能在构造函数的后面使用.

this调用的同类的构造函数.

super的限制条件同样适用于this函数

一个构造函数定义中不能同时包括this调用和super调用,如果想同时包括的话,可以在this中首先进行super调用.

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/198681.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-04 10:27
下一篇 2024-12-04 10:27

相关推荐

  • 如何查看Python关键字

    Python是一种高级编程语言,具有很多有用的特性和优势。在Python中,关键字被用于标识特定的语法结构。如果您正在学习Python编程,了解Python的关键字是非常重要的。在…

    编程 2025-04-29
  • Python类定义关键字解析

    在Python中,类定义是代码的重要组成部分。它允许程序员定义包含数据和函数的新类型。类定义的关键字在Python中是具有重要性的,它们包括class、def、self、__ini…

    编程 2025-04-27
  • Java final关键字详解

    一、final关键字介绍 final是Java中一个非常重要的关键字,用来标识一个最终的变量、方法或类。 当一个变量被final修饰时,意味着一旦它被赋值,它的值将不能再改变。当一…

    编程 2025-04-25
  • 如何使用定义类的关键字

    一、什么是定义类的关键字 在编程中,定义类的关键字是用来声明并定义一个类的,类是将数据和函数封装在一起形成的一种类型,通过类来实例化对象。在Python程序中,定义类的关键字是 c…

    编程 2025-04-25
  • Python 关键字参数的详细阐述

    Python 是一种高级编程语言,在该语言中,使用关键字参数可以使得编写的程序更加具有可读性和可维护性。本文将从以下几个方面对 Python 关键字参数进行详细阐述。 一、定义关键…

    编程 2025-04-24
  • SQL关键字执行顺序详解

    在SQL语句的执行过程中,关键字的执行顺序是非常重要的,因为它能决定查询结果的正确性、效率和可读性。本文将从多个方面对SQL关键字执行顺序进行详细的阐述。 一、SELECT语句中关…

    编程 2025-04-23
  • c++ override关键字详解

    一、override关键字是什么? override关键字,是C++11标准引进的一种新特性,它可以用来强制子类重写父类虚函数。在子类中使用override关键字,声明子类中的函数…

    编程 2025-04-22
  • 探究native关键字

    一、native关键字的作用 在Java中,native关键字用来表示该方法的实现是由外部编写的语言(如C、C++)实现的。也就是说,Java虚拟机调用该方法时会转向外部语言的实现…

    编程 2025-04-20
  • 理解extern关键字作用的多个方面

    一、变量定义与声明 extern一般用于变量或函数的声明,主要的作用是告诉编译器这个变量或函数已经在别的地方定义了,在此处只需要声明即可。具体用法为: /*在main.c文件中*/…

    编程 2025-04-12
  • Python的关键字

    一、Python是什么 Python是一种高级编程语言,它具有清晰简单的语法和强大的标准库,被广泛应用于科学计算、Web开发、数据分析、人工智能等领域。 二、Python的关键字 …

    编程 2025-02-17

发表回复

登录后才能评论