多态抽象类接口
1:final关键字可以干什么?有什么特点?2:final关键字的面试题?3:多态是什么,前提是什么?4:多态中成员访问的特点?5:多态的好处及弊端?如何解决多态的弊端?6:什么是向上转型?什么是向下转型?7:多态练习8:抽象类概述及其特点?9:抽象类成员特点?10:抽象类练习?11:抽象类的小问题12:接口的概述及其特点?13:接口的成员特点?14:接口的练习15:抽象类和接口的区别?16:案例1:final关键字可以干什么?有什么特点?
修饰类、方法、属性和变量
final 修饰类,则该类不允许被继承,为最终类final 修饰方法,则该方法不允许被覆盖(重写)final 修饰属性:则该类的属性不会进行隐式的初始化(类的初始化属性必须有值)或在构造方法中赋值(但只能选其一)final 修饰变量,则该变量的值只能赋一次值,即常量
2:final关键字的面试题?
A:修饰局部变量B:初始化时机
a:基本类型 值不能发生改变
b:引用类型 地址值不能发生改变,但是对象的内容是可以改变的
a:只能初始化一次
b:常见的给值
定义的时候(推荐)
构造方法中
3:多态是什么,前提是什么?
允许不同类的对象对同一消息做出响应同一个对象在不同时刻体现出来的不同状态A:有继承或者实现关系
B:有方法重写
C:有父类或者父接口引用指向子类对象 (向上转型)
4:多态中成员访问的特点?
成员变量成员方法静态方法
A:成员变量
编译看左边,运行看左边
B:构造方法
子类的构造都会默认访问父类构造
C:成员方法
编译看左边,运行看右边
D:静态方法
编译看左边,运行看左边
为什么?
因为成员方法有重写
5:多态的好处及弊端?如何解决多态的弊端?
多态的好处:
A:提高代码的维护性(继承体现)
B:提高代码的扩展性(多态体现)
多态的弊端:
父不能使用子的特有功能
现象:子可以当作父使用,父不能当作子使用
6:什么是向上转型?什么是向下转型?
A:向上转型
从子到父
B:向下转型
从父到子
强转符 ()Man m = (Man)p;可能ClassCastException异常使用instanceof在进行向下转型前判断if(p instnceof Man) {Man m = (Man)p;}
7:多态练习
class Animal {//父类方法public void bark() {System.out.println("动物叫!");}}
class Dog extends Animal {//子类重写父类的bark方法public void bark() {System.out.println("汪、汪、汪!");}//子类自己的方法public void dogType() {System.out.println("这是什么品种的狗?");}}
public class Test {public static void main(String[] args) {Animal a = new Animal();Animal b = new Dog();Dog d = new Dog();a.bark();b.bark();//b.dogType();//b.dogType()编译不通过d.bark();d.dogType();}}
8:抽象类概述及其特点?
在定义类时,前面加上 abstract 关键字修饰的类叫抽象类
抽象就是看不懂的
A:抽象类和抽象方法必须用关键字abstract修饰
B:抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类
C:抽象类不能实例化
D:抽象类的子类
a:是一个抽象类
b:是一个具体类这个类必须重写抽象类中的所有抽象方法
9:抽象类成员特点?
A:成员变量
有变量,有常量
B:构造方法
有构造方法
C:成员方法
有抽象,有非抽象
10:抽象类练习?
// 抽象方法public abstract class TelePhone {public abstract void call(); //抽象方法,打电话public abstract void message(); //抽象方法,发短信}
// 构建子类,并实现抽象方法public class CellPhone extends TelePhone {@Overridepublic void call() {System.out.println("我可以打电话!");}@Overridepublic void message() {System.out.println("我可以发短信!");}public static void main(String[] args) {CellPhone cp = new CellPhone();cp.call();cp.message();}}
11:抽象类的小问题
A:一个类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?B:[abstract不能和哪些关键字共存](/qq_29842929/article/details/53536807)
可以 不让创建对象
a:final 冲突
b:private 冲突
c:static 无意义
12:接口的概述及其特点?
接口用于描述类所具有的功能,而不提供功能的实现,
功能的实现需要写在实现接口的类中,并且该类必须实现接口中所有的未实现方法
A:接口用关键字interface修饰
interface 接口名 {}
B:类实现接口用implements修饰
class 类名 implements 接口名 {}
C:接口不能实例化
D:接口的实现类
a:是一个抽象类
b:是一个具体类,这个类必须重写接口中的所有抽象方法
13:接口的成员特点?
A:成员变量
只能是常量
默认修饰符:public static final
B:构造方法
没有构造方法
C:成员方法
只能是抽象的
默认修饰符:public abstract
14:接口的练习
// Cat.javapublic class Cat implements Animal{public void eat(){System.out.println("Cat eats");}public void travel(){System.out.println("Cat travels");}public static void main(String[] args) {Cat cat = new Cat();cat.eat();cat.travel();}}
15:抽象类和接口的区别?
区别
A:成员区别
抽象类:
接口:
B:关系区别:
类与类:
类与接口:
接口与接口:
C:设计理念不同
抽象类:is a,抽象类中定义的是共性功能
接口:like a,接口中定义的是扩展功能
相同:
都不能创建对象
都可以定义抽象方法,并且一定要在子类中重写
不同:
关键字不同abstract interface
抽象方法中既可以有抽象的方法也可以有普通的方法
接口中中所有的方法都是抽象方法
抽象类的方法可以任意权限,接口中方法只能是public
抽象类只能单继承,接口可以多实现
16:案例
[猫狗案例,加入跳高的额外功能](/dai_ma_dong/article/details/95896248)[老师和学生案例,加入抽烟的额外功能](/qq_23973805/article/details/79121017)[教练和运动员案例(学生分析然后讲解)](/lcn_Lynn/article/details/74989842)