复习{
继承关系:
面向对象 重要特性之一:
封装 , 继承 , 多态, 抽象
继承的作用?
可以提高程序的延展性,减少代码冗余
public class Person{
public Person(String name){
this.name = name;
}
String name;
}
public class Student extends Person,Haha{
public Student(String name){
super(name);
}
}
子类继承父类后有什么特点?
1.子类会继承父类的所有 公共资源,子类独有的方法 ,父类获取不到
2.构造方法不能被继承, 只能被 子类构造器调用
super(); super(参数列表); this(); 必须放在构造器第一行
3.java中 继承 支持多重继承,不允许 多继承
4.方法的重写:
在继承中,方法名相同, 参数列表相同(个数相同,顺序, 类型), 返回值相同,就是方法的重写
@Override 检测
=======================================================================
多态:
前提 一定是 继承 ,没有继承 就没有多态
概念: 同一种事物的 ,不同种 表现形态 孙悟空
在java中能体现 多态的 代码有几种 形式?
1.将 一个 父类 类型 ,作为 方法的入参
2.父类 变量名 = new 子类(); 必选的
父类引用 指向了 子类对象
3.??
instanceof 关键字 用来判断 两个类型是否相同
if(pet instanceof Dog){ 在继承中,需要调用子类独有方法或属性时,才会用intanceof
Dog dog = (Dog)pet;
dog.say();
}
向上转型: Pet pet = new Dog();
向下转型: Dog dog = (Dog)pet;
在多态的情况下:
编译时类型: 父类类型, 编译期间 调用不了子类独有的属性和方法
运行时类型: 子类类型 , pet 就会字段转换为 子类 类型
--------------------------------------------------
final关键字:
1.可以修饰属性:
用final 修饰的属性 必须初始化 ,而且 不可以被 二次修改
有几种 初始化方式: 2种
1.=赋值
2.构造器赋值
2.可以修饰方法:
因为 被final 修饰的方法不能被重写
3.可以修饰类
用final修饰的类 不可以被继承
就不可以拓展,
}