什么是多态?
多态是在继承或者实现情况下的一种现象,表现为:对象多态、行为多态。
多态的具体代码体现
People p1 = new Student();
p1.run();
People p2 = new Teacher();
p2.run();
多态的前提
有继承/实现关系;存在父类引用指向子类对象;存在方法重写。
多态的一个注意事项
多态是对象、行为的多态,Java中的属性(成员变量)不谈多态。
多态的好处
在多态形式下,等号左右两边松耦合,更便于修改和维护
定义方法时,使用父类类型的形参,可以接收一切子类对象,扩展性更强、更便利
多态的弊端
多态下不能使用子类的独有功能。
类型转换
父类 变量名 = new 子类();
子类 变量名 = (子类) 父类变量
类型转换注意事项
instenceof
final修饰的类、方法、变量各有什么特点?
修饰类:该类被称为最终类, 类不能再被继承
修饰方法:该方法被称为最终方法, 方法不能被重写
修饰变量:该变量只能被赋值一次, 赋值完毕之后不能再修改
final修饰基本类型和引用类型的变量有啥区别?
final修饰基本类型的变量,变量存储的数据不能被改变
final修饰引用类型的变量,变量存储的地址不能被改变
但地址所指向对象中的内容是可以被改变的。
什么是抽象类?
在Java中有一个关键字叫:abstract,它就是抽象的意思,可以用它修饰类、成员方法。labstract修饰类,这个类就是抽象类;修饰方法,这个方法就是抽象方法。
修饰符 abstract class 类名{
修饰符 abstract 返回值类型 方法名称(形参列表);
}
public abstract class A {
// 抽象方法:必须abstract修饰,只有方法签名,不能有方法体。
public abstract void test();
}
抽象类的特点
抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类。类该有的成员(成员变量、方法、构造器)抽象类都可以有。抽象类最主要的特点:抽象类不能创建对象,仅作为一种特殊的父类,让子类继承并实现。一个类继承抽象类,必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类。
模板方法设计模式用来解决什么问题?
一个功能的完成需要经过一系列步骤,这些步骤是固定的
但是中间某些步骤具体行为是待定的,在不同的场景中行为不同
模板方法设计模式应该怎么写?
定义一个抽象类,在里面定义2个方法
一个是模板方法:放相同的代码里,一个是抽象方法:具体实现交给子类完成
模板方法建议使用什么关键字修饰?为什么?
建议使用final关键字修饰模板方法
接口是什么?
使用interface关键字定义的一种结构, JDK 8之前,接口中只能定义成员变量和成员方法。
接口怎么使用?需要注意什么?
接口 是被类 实现的。
实现类实现多个接口,必须重写完全部接口的全部抽象方法,否则实现类需要定义成抽象类。