写在前面

  第二篇学习笔记

笔记

java的多态

  1. 多态是方法的多态,不是属性的多态(多态与属性无关)
  2. 多态的存在要有3个必要条件:继承,方法重写,父类引用指向子类对象。父类引用指向子类对象后,用该父类引用调用子类重写的方法
    mark

数组foreach循环

foreach循环,用于快速读取数组元素的值,不能修改

int[] d = new int[5];

        //for循环可用于修改数组
        for(int i = 0;i<d.length;i++) {
            d[i] = i;
        }
        //foreach循环,用于读取数组元素的值,不能修改
        for(int i:d) {
            System.out.println(i);
        }

抽象方法和抽象类abstract

使用abstract修饰的方法就是抽象方法,没有方法体,只有声明。
abstract public void shout(); //抽象方法
有抽象方法的类就是抽象类。抽象类一般用于定义规范,子类必须实现。

抽象类的特点:
1. 抽象类不能实例化。
2. 抽象类可以包含属性、方法、构造方法。但是构造方法不能用来new实例,只能用来被子类调用
3. 抽象类只能用来被继承
4. 抽象方法子类必须实现

接口

关于接口的一些注意事项:
1. 接口的访问修饰符只能是public或默认
2. 接口可以多继承!!
3. 常量:接口中的所有属性只能是常量,都是:public static final 修饰,即使不写public static final也是(常量一般命名都用大写字母和下划线 MAX_NUM)
4. 方法:接口中的方法只能是:public abstract,即使省略的话,也是public abstract(一般都会写上)
5. 接口不能创建实例,但是可用于声明引用变量类型

java中既有单继承(类),又有多继承(接口)

内部类

非静态内部类,外部创建内部类对象:
Outer.Inner inner = new Outer().new Inner();
- 非静态内部类可以直接访问外部类的成员,但是外部类不能直接访问非静态内部类成员
- 非静态内部类不能有静态方法、静态属性和静态初始化块
- 外部类的静态方法、静态代码块不能访问非静态内部类,包括不能使用非静态内部类定义变量、创建实例

静态内部类: 外部穿件内部类对象
Outer2.Inner2 inner = new Outer2.Inner2();
不需要依托于外部类对象
- 当一个静态内部类对象存在,并不一定存在对应的外部类对象。 因此,静态内部类的实例方法不能直接访问外部类的实例方法
- 静态内部类看做外部类的一个静态成员。 因此,外部类的方法中可以通过:“静态内部类.名字”的方式访问静态内部类的静态成员,通过 new 静态内部类()访问静态内部类的实例

匿名内部类:一般适用于只需要使用一次的类

局部内部类(用得少),在方法内定义一个类,作用于仅限于此方法