Day3 Java学习日记

Day3 2019.11.1#

继承

  • 是 “is a”的关系
  • 声明的形式
  • public class Manager extends Employee{…0}
  • Java是一个单一继承的语言(一个类只有一个直接父类,如果没有声明父类,则默认的父类为java.lang.Object)

### 注释: ###

  • 1.构造方法不能被继承
  • 2.属性和方法可以继承
  • 3.子类的构造方法隐含的调用父类的默认构造方法
  • 4.如果父类中没有默认的构造方法,则应该在子类的构造方法的第一行明确的声明调用父类中其他的构造方法。如下形式:
    super(…)

super关键字的应用

  • 代表指向父类的引用
    - super.age //调用父类的属性
    - super.addAge() //调用父类的方法
  • 代表调用父类的构造方法
    - super();
    - super(“wangcai”,8);

继承条件创建对象

  • 当构造一个对象的时候,系统先构造父类对象,再构造子类对象。
  • 构造一个对象的顺序:(注意:构造父类对象的时候也是这几步)

注释

  • 递归地构造父类对象;
  • 顺序地调用本类成员属性赋初值语句;
  • 本类的构造方法。

类型转换

  • is instanceof 用来判断指定的对象是否是当前类的对象
    • 子类对象可以隐含扩展为父类型
      • Student stu = new Student();
      • Person p= stu;
      • Person p1=new Teacher();
    • 父类型必须明确声明转化为子类型
      • Student stu1 =(Student)p;//转换者必须确定p指向的就是学生才可以转换
    • 不是所有的父类型对象都能转化为子类型
      • Teacher t=(Teacher)p1;√
      • Teacher t=(Teacher)p; ×

强制转换:谁转换谁负责

对父类方法进行重写(覆盖)–>多态(动态多态即运行时结果多态)

  • 加上override,编译器会进行检查是否被重写
  • 1.一定有两个类,这两个类有继承关系
  • 2.子类对父类中的进行重新编写,方法的名称要相同,参数个数、类型也要相同

注释

  • 重写方法的时候,子类的权限要比父类更开放。

静态变量(类变量)

  • 一个类只有一份,被类的所有实例共享
  • 能在没有生成任何类的实例时就被访问到
  • 在某种意义上类似于全局变量
  • 直接使用类名来访问

静态方法(类方法)

  • 可以在没有任何实例时调用
  • 不能再static方法内部访问非static成员
  • 不能被非static方法覆盖

静态块

  • 使用static声明的代码块,称为静态块,静态块主要目的是为静态属性进行初始化。

final关键字

  • final用来修饰一个类,方法,属性或局部变量
  • final类不能被继承
  • final方法不能被覆盖
  • final变量的值不能被改变

static final 就相当于常量

抽象类

  • 抽象类他的存在就是给子类去继承实现的 (is a)。
  • 如果一个方法没有实现的代码,那么它必须被声明为抽象的方法。
    • 如果一个类包含有抽象方法,那么它必须被声明为抽象类。
    • 抽象类不能实例化----不能生成对象。
    • 可以定义一个抽象类的引用。

你可能感兴趣的:(Day3 Java学习日记)