Java学习历程之----提升篇(三)

2022-06-01 18:18:09 浏览数 (2)

禧难题之七:

贝赫和斯维讷通-戴尔猜想:指的是对有理数域上的任一椭圆曲线, 其L函数在1的化零阶等于此曲线上有理点构成的Abel群的秩。数学家总是被诸如X**2 Y**2=Z**2这样的代数方程的所有整数解的刻画问题着迷。欧几里德曾经对这一方程给出完全的解答,但是对于更为复杂的方程,这就变得极为困难。事实上,正如马蒂雅谢维奇指出,希尔伯特第十问题是不可解的,即不存在一般的方法来确定这样的方法是否有一个整数解。当解是一个阿贝尔簇的点时,贝赫和斯维讷通-戴尔猜想认为,有理点的群的大小与一个有关的蔡塔函数z(s)在点s=1附近的性态。特别是,这个有趣的猜想认为,如果z⑴等于0,那么存在无限多个有理点(解),相反,如果z⑴不等于0,那么只存在有限多个这样的点。

前言

上周我们学习了类的继承,子类对父类的继承并不改变类成员的访问权限,也就是说,如果父类的成员是公有的、被保护的或默认的,它的子类仍具有相应的这些特性,但有一点我们要特别注意:子类不能获得父类的构造方法!那么子类想要调用父类的构造方法时,我们应该怎么做呢?

一.super关键字

如果要调用父类的构造方法,可以使用 super关键字。super可以用来访问父类的构造方法、普通方法和属性。Super关键字的主要功能有两点;1)在子类的构造方法中显式的调用父类构造方法,2)访问父类的成员方法和变量。

二.Super关键字调用父类构造方法

super 关键字可以在子类的构造方法中显式地调用父类的构造方法,基本格式如下:

super(parameter-list);

其中,parameter-list 指定了父类构造方法中的所有参数,super( ) 必须是在子类构造方法的方法体的第一行。具体如何使用我们通过实战进一步详细说明。

三.super关键字访问父类成员

当子类的成员变量或方法与父类同名时,可以使用 super 关键字来访问。如果子类重写了父类的某一个方法,即子类和父类有相同的方法定义,但是有不同的方法体,此时,我们可以通过 super 来调用父类里面的这个方法。

使用 super 访问父类中的成员与 this 关键字的使用相似,只不过它引用的是子类的父类,语法格式如下:

super.member

其中,member 是父类中的属性或方法。使用 super 访问父类的属性和方法时不用位于第一行。下面实战做进一步说明。

四.super和this的区别

4.1.super关键字的用法:

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

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

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

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

4.2. this关键字的用法:

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

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

通俗来讲,可以将super理解为指向父类对象的指针,this为指向当前对象的指针。下面通过实战我们来学习super关键字的用法吧。

五.实战

5.1.super调用父类构造方法

代码语言:javascript复制
package tisheng3;
class People {
    public People(String name, int age) {//声明父类2个参数的构造方法
        System.out.println("我是带两个参数的父类构造方法:" name age "岁");
    }
    public People(String name, String sex,int age) {//声明父类3个参数的构造方法
        System.out.println("我是带三个参数的父类构造方法:" name "性别" sex age "岁");
    }
}
class Pupil extends People {
    public Pupil(int Num) {//声明子类带1个参数的构造方法
        super("IT进阶之旅", 1); // 调用父类中含有2个参数的构造方法
        System.out.println("子类带一个参数的构造方法,日期为:" Num);
        System.out.println();
    }
    public Pupil(String name, int Num) {//声明子类带两个参数的构造方法
        super("小圈圈", "男", 16); // 调用父类中含有3个参数的构造方法
        System.out.println("子类带2个参数的构造方法,名字为:" name "日期为:" Num);
    }
}
class Test {
    public static void main(String args[]) {
        Pupil X1 = new Pupil(20200502);//调用1个参数的构造方法
        Pupil X2 = new Pupil("农历",20200410);//调用2个参数的构造方法
    }
}

5.2.super关键字访问父类成员

代码语言:javascript复制
package tisheng3;
class Father {
    int ID = 12345;
    void property() {
        System.out.println(",I'm daddy,I have six dollars!");
    }
}
class Son extends Father {
    int ID = 56789;
    void property() {
        System.out.println("ID:" ID ",I'm son,I am very poor!");
    }
    void poor() {
        property();//调用子类本身的property方法
        System.out.printf("ID:" super.ID);//调用父类的成员变量
        super.property();//调用父类的property方法
    }
}
class Test2 {
    public static void main(String args[]) {
        Son s = new Son();//实例化一个Son对象
        System.out.println("调用子类的property方法:");
        s.property();
        System.out.println();
        System.out.println("调用子类的poor方法:");
        s.poor();
    }
}

END

小编有话说:

恍惚间,四月在五一的规划中画上句号,今年也已过去三分之一,岁月不等人,把握当下才能喜迎美好未来!上周课后习题参考答案如下(文末还有本周课后习题,大家记得查收~):

按要求编写一个Java应用程序:

(1)定义一个类,描述一个矩形,包含有长、宽两种属性,和计算面积方法。

(2)编写一个类,继承自矩形类,同时该类描述长方体,具有长、宽、高属性,和计算体积的方法。

(3)编写一个测试类,对以上两个类进行测试,创建一个长方体,定义其长、宽、高,输出其底面积和体积。

0 人点赞