黑马程序员---面向对象2
来源:互联网 发布:mysql 嵌套select语句 编辑:程序博客网 时间:2024/06/04 18:29
---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------
1、继承
子类名 extends 父类名
继承提高了代码的复用性,让类与类之间产生了关系,有了这个关系,才有了多态的特性。
注意:必须是类与类之间有所属关系才可以继承。
java语言中:java只支持单继承,不支持多继承。但java支持多层继承,也就是一个继承体系。
因为多继承容易带来安全隐患:当多个父类中定义了相同功能时,子类不能确定执行哪一个。
如何使用一个继承体系中的功能呢?
想要使用体系,先查阅体系父类的描述,因为父类中定义的是该体系中共性功能。
查阅父类功能,创建子类对象使用功能。
聚集:聚合,组合。
super关键字:代表父类对象的引用。
this关键字:代表本类对象的引用。
函数的另一个特性:覆盖,也称为重写。
子类覆盖父类,必须保证子类权限大于等于父类权限,才可以覆盖,否则编译失败。
静态只能覆盖静态。
重载:只看同名函数的参数列表。
重写:子父类方法要一模一样。
父类中的构造函数不能被子类所覆盖。(类名都不一样。)
在对子类对象进行初始化时,父类的构造函数也会运行,那是因为子类的每一个构造函数默认第一行有一条隐式的语句super()。
super():会访问父类中空参数的构造函数。
为什么子类一定要访问父类中的构造函数?
因为父类中的数据子类都可以直接获得,所有子类对象在建立时,需要先查看父类是如何初始化这些数据的。
当子类中没有空参数的构造函数时,子类必须手动通过super语句形式来指定要访问的父类中的构造函数。
当然,子类的构造函数的第一行也可以手动指定this语句来访问本类中的构造函数,子类中至少有一个构造函数会访问父类中的构造函数。
2、抽象
当多个类中出现相同功能,但功能主体不同,这时可以进行向上抽取。这时,只抽取功能定义,而不抽取功能主体。
抽象:看不懂。
特点:
a 抽象方法一定在抽象类中。
b 抽象方法和抽象类都必须被abstract关键字修饰。
c 抽象类不可以用new创建对象。因为调用抽象方法没意义。
d 抽象类中的抽象方法要被使用,必须由子类复写所有的抽象方法后,建立子类对象调用。
如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。
抽象类比一般类多了抽象函数,在类中可以定义抽象方法。
抽象类不可以实例化。
特殊:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象。
3、模板方法设计模式
什么是模板方法呢?
在定义功能时,功能的一部分是确定的,但是有一部分是不确定的,而确定的部分在使用不确定的部分时,那么将不确定的功能提供出去,给子类进行确定。
4、接口
接口:初期理解,可以认为是一个特殊的抽象类。当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示。
关键字:interface
接口定义时,格式特点:
a 接口常见定义:常量,抽象方法。
b 接口中的成员都有固定修饰符。
常量:public static final
方法:public abstract
接口中的成员都是public的。
接口:不可以创建对象的,因为有抽象方法,需要被子类实现,子类对接口中的抽象方法全都覆盖后,子类才可以实例化。
5、多态
多态:事物存在的多种体现形态。
向上转型:类型提升。
向下转型:强制将父类的引用,转成子类类型。(前提这个父类本身是向上转型得来的。)
我们向下转换的是父类引用指向了自己的子类对象时,该引用才可以向下转型。
多态自始至终都是子类对象在做变化。
关键字 instanceof 判断引用类型相同否。
在多态中成员函数的特点:
在编译时期:参阅引用型变量所属的类中是否有调用的方法,如果有,编译通过,如果没有编译失败。
在运行时期:参阅对象所属的类中是否有调用的方法。
成员函数在多态调用时,编译看左边,运行看右边。
在多态中,成员变量的调用,无论编译还是运行都看左边(父类)。
在多态中,静态成员函数的特点:无论编译还是运行都参考左边。
a、多态的体现
父类的引用指向了自己的子类对象。
父类的引用也可以接收自己的子类对象。
b、多态的前提
必须是类与类之间的关系,要么继承,要么实现。
通常还有一个前提,存在覆盖。
c、多态的好处
多态的出现提高了代码的扩展性。
d、多态的弊端
提高了扩展性,但是只能使用父类的引用访问父类中的成员。
数据库的操作?
1、连接数据库。JDBC Hibernate
2、操作数据库。增,删,改,查
3、关闭数据库连接。
6、object类----equals()
object类是所有类的父类。
Object类中已经提供了对对象是否相同的比较方式。
如果自定义类中也有比较相同的功能,那么没有必要重新定义。只要沿袭父类中的功能,建立自己特有比较内容即可。这就是覆盖。
7、内部类
内部类的访问规则:
a、内部类可以直接访问外部类中的成员,包括私有的成员。
之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用,格式:外部类.this
b、外部类要访问内部类,必须建立内部类的对象。
访问格式:
当内部类定义在外部类的成员位置上,而且非私有,可以在外部其他类中。
可以直接建立内部类对象。
外部类名.内部类名 变量名 = 外部类对象 . 内部类对象;
当内部类在成员位置上,就可以被成员修饰符所修饰。
比如,private:将内部类在外部类中进行封装。
static:内部类就具备static的特性。
当内部类中定义了静态成员,该内部类必须是静态的。
当描述事物时,事物的内部还有事物,该事物用内部类来描述。因为内部事物可以使用外部事物的内容。
内部类定义在局部时:不可以被成员修饰符修饰;可以直接访问外部类中的成员,因为还持有外部类中的引用,但是不可以访问它所在的局部中的变量,只能访问final修饰的局部变量。
匿名内部类:
a、匿名内部类其实就是内部类的简写格式
b、定义匿名内部类的前提: 内部类必须是继承一个类或者实现接口。
c、匿名内部类的格式: new 父类或接口(){ 定义子类的内容 }
d、其实匿名内部类就是一个匿名子类对象。
e、匿名内部类只能调用一次方法。
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net
- 黑马程序员---面向对象2
- 黑马程序员---面向对象2
- 黑马程序员-面向对象2
- 黑马程序员--面向对象2
- 黑马程序员-面向对象2
- 黑马程序员 面向对象
- 黑马程序员---面向对象
- 黑马程序员-面向对象
- 黑马程序员-面向对象
- 黑马程序员-面向对象
- 黑马程序员--面向对象
- 黑马程序员-面向对象
- 黑马程序员--面向对象
- 黑马程序员--面向对象
- 黑马程序员-面向对象
- 黑马程序员--面向对象
- 黑马程序员-面向对象
- 黑马程序员-----面向对象
- 具备十五种让你成功的能力
- SharePoint 2013的100个新功能之场管理
- delphi自动根据窗体大小缩放控件大小
- IDA文件目录简介
- 黑马程序员-集合的总结
- 黑马程序员---面向对象2
- hdu2473 Junk-Mail Filter (并查集删除节点)
- XCode4.3创建第一个ios入门项目,翻译至官方教程(三)
- wikioi 提高组高精度
- JOB
- 数据库重要概念简述
- Eclipse中Build Workspace 优化
- C#生产者与消费者问题
- Java数据类型语法解析