多态
一.静态多态:在编译期就确定执行的哪个对象的哪个方法。
1.体现(方法重载)
2.体现(单独使用方法重写)
二.动态多态:在编译的时候不知道,运行时才能确定方法所指的对象。
1.转型技术:A.数据类型 自动转换小转大 (比如float f = 5)
强制转换大转小 (比如float f = (float)5.0)
B.引用类型 自动转换向上转型(父类的引用指向子类时该引用只能看到来自父类的属性行,看不到子类特有的属性行为 绝对成功没有风险)
(父类的引用指向子类时,该引用调用被子类重写的方法,得到是子类重写后的效果)
强制转换向下转型(强制转换,不一定成功,有风险)
(只有在本类的引用指向本类的对象才能成功)
2.动态绑定:父类的引用指向子类对象,同时调用父类被重写方法。
运行时根据父类引用变量所指对象的实际类型执行相应的子类方法,从而实现多态性。
三.instanceof运算符:用于判断运行时对象的真正类型。
格式:if(引用 instanceof 类名){}
抽象
一.表明该类拥有一个这样的行为,但是不知道该如何去实现。
abstract关键字:只能修饰类,修饰方法。
格式:类(修饰符 abstract 类 类名)
方法(修饰符 abstract 返回类型 方法名)
可以写在class关键字前的任何地方。
二。注意:1.有抽象方法的类必须是抽象类,在语法上抽象类不一定有抽象方法,但是这样失去了设计的意义。
2.抽象类不能产生对象,抽象类的用途是专门用来产生子类的。
3.抽象类也是有构造方法的,虽然自身不能产生对象,但是子类可以产生对象。
4.子类继承抽象类的时候,必须重写所有的抽象方法,除非该子类自己也是抽象类。
5.抽象类不影响动态绑定,抽象类的引用可以指向子类对象,并强迫子类重写父类的抽象方法。
接口
一.
为了没有继承关系的类,也能共享行为,设计出来的独立的数据类型
格式:接口命名往往后面加上able,代表提供什么样的能力
属性只能是公共的静态的常量属性,就算不写关键字,默认为公共静态常量。
接口所有方法都是公共抽象方法,可以不写默认就是public abstract。
接口是没有构造方法的。
编写接口
实现接口:使用关键字implements,必须重写来自接口的所有的抽象方法(比如本类)
没有重写来自接口的所有方法,那么该类只能是抽象类。
类可以同时做子类继承和实现多个接口
接口类的引用可以是指向实现类的对象(如同父类指向子类)
继承接口 接口继承接口可以是多继承
抽象类和接口的区别,抽象类写的是与生俱来的行为,接口写的是外部可选的特征和行为(判断如果没有这个行为是不是这个类,如果是就写入类中)
单一原则
开闭原则,好的软件设计应该是可以任意扩展,对于修改功能是关闭的。
最小接口原则(接口隔离原则)
一.静态多态:在编译期就确定执行的哪个对象的哪个方法。
1.体现(方法重载)
2.体现(单独使用方法重写)
二.动态多态:在编译的时候不知道,运行时才能确定方法所指的对象。
1.转型技术:A.数据类型 自动转换小转大 (比如float f = 5)
强制转换大转小 (比如float f = (float)5.0)
B.引用类型 自动转换向上转型(父类的引用指向子类时该引用只能看到来自父类的属性行,看不到子类特有的属性行为 绝对成功没有风险)
(父类的引用指向子类时,该引用调用被子类重写的方法,得到是子类重写后的效果)
强制转换向下转型(强制转换,不一定成功,有风险)
(只有在本类的引用指向本类的对象才能成功)
2.动态绑定:父类的引用指向子类对象,同时调用父类被重写方法。
运行时根据父类引用变量所指对象的实际类型执行相应的子类方法,从而实现多态性。
三.instanceof运算符:用于判断运行时对象的真正类型。
格式:if(引用 instanceof 类名){}
抽象
一.表明该类拥有一个这样的行为,但是不知道该如何去实现。
abstract关键字:只能修饰类,修饰方法。
格式:类(修饰符 abstract 类 类名)
方法(修饰符 abstract 返回类型 方法名)
可以写在class关键字前的任何地方。
二。注意:1.有抽象方法的类必须是抽象类,在语法上抽象类不一定有抽象方法,但是这样失去了设计的意义。
2.抽象类不能产生对象,抽象类的用途是专门用来产生子类的。
3.抽象类也是有构造方法的,虽然自身不能产生对象,但是子类可以产生对象。
4.子类继承抽象类的时候,必须重写所有的抽象方法,除非该子类自己也是抽象类。
5.抽象类不影响动态绑定,抽象类的引用可以指向子类对象,并强迫子类重写父类的抽象方法。
接口
一.
为了没有继承关系的类,也能共享行为,设计出来的独立的数据类型
格式:接口命名往往后面加上able,代表提供什么样的能力
属性只能是公共的静态的常量属性,就算不写关键字,默认为公共静态常量。
接口所有方法都是公共抽象方法,可以不写默认就是public abstract。
接口是没有构造方法的。
编写接口
实现接口:使用关键字implements,必须重写来自接口的所有的抽象方法(比如本类)
没有重写来自接口的所有方法,那么该类只能是抽象类。
类可以同时做子类继承和实现多个接口
接口类的引用可以是指向实现类的对象(如同父类指向子类)
继承接口 接口继承接口可以是多继承
抽象类和接口的区别,抽象类写的是与生俱来的行为,接口写的是外部可选的特征和行为(判断如果没有这个行为是不是这个类,如果是就写入类中)
单一原则
开闭原则,好的软件设计应该是可以任意扩展,对于修改功能是关闭的。
最小接口原则(接口隔离原则)