学习java的第五天
注释
- 类前 方法前 属性前 写文档注释信息。
- 逻辑步骤 单行多行注释。
继承
- why:减少代码的冗余,提高复用性。
- 格式 class a Extends b{}
- 父类中的私有属性和方法,子类可以继承,但是不可以直接使用父类的结构。
- 类是单继承的,接口是多继承的。
方法的重写
注意方法的重写与重载
- 重载:方法名一致 但是参数个数类型不一致功能相同 但用于处理不同的数据
- 重写:在继承中 子类对于父类同名同参数的方法进行覆盖操作 返回值类型
方法的返回值类型
-
被重写方法返回值类型是void重写方法也是void
-
被重写方法返回值是a类 重写方法的返回值类型是a以及a的子类
-
被重写的方法是基本数据类型 重写的返回值类型必须是基本数据类型
static
- 只有父类当中非static方法才可以被重写。
super
- 理解为 父类的
- super 可以用来调用属性 方法 构造器
实例
- super调用构造器 super(形参列表) 调用父类中对应形参列表的构造器。
- 必须声明在首行
- 在子类的首行如果没有显式的声明this(形参列表)和super(形参列表)则默认的是父类的空参构造器
子类对象实例化的过程
- 子类对象实例化 能够实行父类中的属性和方法是因为子类间接或者直接调用过父类的构造器。
多态性
-
理解:一个事物的多种形态
- 对象的多态性 父类的引用指向子类的对象
-
Person p = new Man();
-
使用:当调用子父类同名的参数的方法,执行的是子类重写的方法。
- 编译看左,执行看右
-
使用前提:类的继承关系,方法的重写
-
优点:省去了重写方法的设计 不太理解
-
public static void main(String[] args) { Test test = new Test(); test.fun(new Dog()); //通过测试类创建对象 调用功能方法 //在功能方法中传入 新创建的匿名对象类 test.fun(new Cat()); //注意 猫 必须是狗的子类 这是多态的前提之一 //如果没有多态 方法中 参数是狗类 那么只能能创建 //狗的对象 就不能创建猫的对象 } //定义一个功能方法 参数为猫狗类 public void fun (Dog dog){ dog.eat(); dog.walk(); }
-
对象的多态性只适用于方法,不适用于属性。
-
不能调用子类特有的属性和方法
-
有了对象的多态性之后,内存中实际上是加载了子类的特有
-
属性和方法 但是由于声明的变量类型是父类类型 只能调用
-
父类声明的属性和方法 不能调用子类的
-
如果想要调用 使用强制类型转换符 也称为向下转型
-
MUl m1 = (Mul)p1; 子类 父类对象名
-
使用强制类型转换可能出现类转换异常classcastexception
-
-
instanceof的使用方法
- a instanceof A判断对象a是否属于类A的实例 返回布尔值