最后一个暑假之备战职业路-第2天

143 阅读3分钟

写在前面
第一天:内部类。
1.成员内部类:使用任意修饰符;所有方法可访问外部属性;必须使用外部类对象创建内部类对象;一样的变量外部的用this;不能含有static变量和方法
2.静态内部类:通过new 外部类().成员的方式访问外部类静态成员;如内外成员名相同,通过类名.静态成员访问外部类静态成员;如名称不同,直接调用外部类静态成员;创建对象时不需要外部类对象
3.局部内部类:定义完要在外部类的方法中创建内部类对象,从而去调用内部类方法;不能被public,private,static修饰;内部类访问包含他的方法的变量时,必须有final修饰;外部类不能访问局部内部类,只有在方法体中访问
4.匿名内部类:没有class关键字;只能使用一次;必须继承一个父类或实现一个接口;中不能定义构造函数;同样具备局部内部类的限制;不能存在任何静态成员变量和方法;不能抽象,必须实现继承的类或接口的全部抽象方法;

java-继承

子类拥有父类除private修饰外的所有属性和方法
初始化顺序:父类对象==》子类对象==》构造方法 写在后面
final关键字可以修饰类、方法、属性和变量

  • final 修饰类,则该类不允许被继承,为最终类
  • final 修饰方法,则该方法不允许被覆盖(重写)
  • final 修饰属性:则该类的属性不会进行隐式的初始化(类的初始化属性必须有值)或在构造方法中赋值(但只能选其一)
  • final 修饰变量,则该变量的值只能赋一次值,即变为常量

super关键字在子类内部使用,代表父类对象

  • 访问父类的属性super.属性名
  • 访问父类的方法super.bark()
  • 子类构造方法需要调用父类的构造方法时,在子类的构造方法体里最前面的位置:super()

java-多态

允许不同类的对象对同一消息做出响应,也称动态绑定

向上转型

Animal a=new Dog();
向上转型时,会忽略子类对象中与父类对象中不同的方法,也会覆盖与父类中相同的方法
也就是,子类要用的自己的方法就必须子类引用指向子类对象

多态的实现方式

继承父类进行方法重写,抽象类和抽象方法,接口实现

java-接口

  • 不能用于实例化对象
  • 所有方法都是抽象方法
  • 接口成员是static final类型
  • 支持多继承

写在后面:

什么时候会用到抽象类:
1.某些情况,某个父类只知道子类应该包含怎样的方法,但无法准确知道子类怎样实现这些方法(约束子类不关注方法)。
2.从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免子类设计的随意性。
abstract修饰定义抽象类;abstract修饰定义有声明没实现的抽象方法;包含抽象方法就是抽象类;抽象类可以包含普通方法也可以没有抽象方法;抽象类对象不能直接创建,通常是定义引用变量指向子类对象。