拿去不用谢
多态:
事物的多种形态
多态的前提条件是什么?
要有继承关系
方法的重写
父类引用指向子类对象
多态中成员变量访问特点是什么?
编译看左右,执行也看左边
当父类引用指向子类对象的时候,该引用只可以访问被super标识的区域
非静态成员方法
编译看左边,运行看右边
注意:
只要该父类中没有该方法,就编译报错
思考:那多态中成员方法的访问特点呢?
非静态的成员方法:
编译看左边(父类),执行看右边(子类) (动态绑定!!!)
注意:
只要父类中没有该方法,就编译报错
静态的成员方法:
编译看左边(父类),执行看左边(父类)
静态的成员方法算不上重写
多态的好处和弊端分别是什么?
好处:
可维护性
可扩展性
指的就是 把父类当中 形式参数,就可以接收该父类的任意子类对象
弊端:
不可以访问子类特有的成员(成员变量,成员方法)
抽象类:
抽象类的概述及其特点
1,抽象类必须被 abstract 修饰
abstract class Demo {}
2,抽象类中可以不定义抽象方法,但是有抽象方法的类一定是抽象类
抽象方法:
public abstract void 方法名();
3,抽象类不能实例化(创建对象,new)
4,抽象类的子类:
要么还是抽象类
要么重写抽象类中的所有抽象方法
抽象类的成员特点:
抽象类中的成员特点是什么?
成员变量:
常量,变量
成员方法:
抽象,非抽象
抽象方法的作用是什么?
就是为了让子类强制重写
抽象类存在的目的,就是为了让子类继承
抽象类有构造方法吗?
有
目的:
就是为了给子类进行初始化的
/*
* A:案例演示
* 具体事物:猫,狗
* 共性:姓名,年龄,吃饭
* 猫的特性:抓老鼠 catchMouse()
* 狗的特性:看家 lookHome()
*/
*?案例演示
?* 具体事物:基础班老师,就业班老师
?* 共性:姓名,年龄,讲课。
*?案例演示??
??* 具体事物:基础班学生,就业班学生
* 共性:姓名,年龄,学习
练习与问答
思考:1,一个抽象类如果没有抽象方法,可不可以定义为抽象类?
如果可以,有什么意义?
可以
这么做目的只有一个,就是不让其他类创建本类对象,交给子类完成
2,abstract 不可以和哪些关键字共存?
abstract和static
被abstract修饰的方法没有方法体
被static修饰的可以用类名.调用,但是类名.调用抽象方法是没有意义的
abstract和final
被abstract修饰的方法强制子类重写
被final修饰的不让子类重写,所以他俩是矛盾
abstract和private
被abstract修饰的是为了让子类看到并强制重写
被private修饰不让子类访问,所以他俩是矛盾的
接口:
对外提供的规则
在java语言中就是指 interface
接口用哪个关键字表示?
interface A {}
类实现接口用哪个关键字?
class Demo implements A {
//重写抽象方法
}
接口可以创建对象?
不可以的
接口中有构造方法吗?
没有
接口的子类:
要么还是抽象类
要么重写抽象类中的所有抽象方法
接口的成员特点是什么?
成员变量:常量 public static final
成员方法:抽象方法
类与类,类与接口,接口与接口的关系分别是什么?(面试题)
类与类
继承,单继承
类与接口
实现,单实现,多实现
接口与接口
继承,单继承,多继承
思考:抽象类和接口的区别有哪些?(面试题)
1,设计理念:
抽象类:定义是共性的内容,它就是为了让子类来继承
接口: 定义的都是扩展的功能
2,成员的区别:
抽象类:
成员变量:变量和常量都可以
成员方法:抽象和非抽象都可以
接口:
只可以定义常量和抽象方法
3,关系(体系)
类与类
继承,单继承
类与接口
实现,单实现,多实现
接口与接口
继承,单继承,多继承 |