XFCall java学习笔记(二)

当你使用可变参数列表时,在两个方法都要加上可变参数列表,避免编译器歧义:


public class OverloadingVarargs3 {
    static void f(float i, Character... args) {
        System.out.println("first");
    }

    static void f(char c, Character... args) {
        System.out.println("second");
    }

    public static void main(String[] args) {
        f(1, 'a');
        f('a', 'b');
    }
}

枚举类型

在这里插入图片描述

使用:

Spiciness howHot = Spiciness.MEDIUM;

继承

如果没有无参数的基类构造函数,或者必须调用具有参数的基类构造函数,则必须使用 super 关键字

class Game {
  Game(int i) {
    System.out.println("Game constructor");
  }
}

class BoardGame extends Game {
  BoardGame(int i) {
    super(i);
    System.out.println("BoardGame constructor");
  }
}

final

  • final 位于static的位置。对基本类型值不变,对引用对象引用对象地址不变,值可变

  • 我们不能因为某数据被 final 修饰就认为在编译时可以知道它的值。

  • final static一起则在对象初始化时创建,初始化一次

  • 在参数列表中,将参数声明为 final 意味着在方法中不能改变参数指向的对象或基本变量

  • final加在方法上,继承的子类不能更改

  • finnal加在类上,则不允许继承

如果一个方法是 private 的,它就不是基类接口的一部分。它只是隐藏在类内部的代码你没有覆写方法,只是在创建新的方法而已
一个类当它任意一个 static 成员被访问时,就会被加载。所有的 static 对象和 static 代码块在加载时按照文本的顺序初始化一次

Java 中除了 staticfinal 方法(private 方法也是隐式的 final)外,其他所有方法都是后期绑定

多态

  • 在继承上,只有普通的方法调用可以是多态的,static方法不具有多态性。
  • 如果在派生类的构造器主体中没有显式地调用基类构造器,编译器就会默默地调用无参构造器。如果没有无参构造器,编译器就会报错(当类中不含构造器时,编译器会自动合成一个无参构造器)。
多态初始化顺序:从继承的类有下往上一次走父类构造器,走到顶,看顶父类是否static数据类型(方法快或者基本类型)
class Glyph {
    void draw() {
        System.out.println("Glyph.draw()");
    }

    Glyph() {
        System.out.println("Glyph() before draw()");
        draw();
        System.out.println("Glyph() after draw()");
    }
}

class RoundGlyph extends Glyph {
    private int radius = 1;

    RoundGlyph(int r) {
        radius = r;
        System.out.println("RoundGlyph.RoundGlyph(), radius = " + radius);
    }

    @Override
    void draw() {
        System.out.println("RoundGlyph.draw(), radius = " + radius);
    }
}

public class PolyConstructors {
    public static void main(String[] args) {
        new RoundGlyph(5);
    }
}
  • 在所有事发生前,分配给对象的存储空间会被初始化为二进制 0,所以radius为0,在draw被覆盖,导致基类构造器的draw调用子类,输出radius为0而不是想要的5,5在之后才会输出。
当父类向下转型时,调用子类的新增方法则报错
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值