黑马自学9.28学习

里氏转换原则:LSP子类可以替换父类的位置,并且程序的功能不受影响

父类有的功能子类都有,所以不影响程序的功能

父类变量指向了一个子类对象

当一个父类变量指向一个子类对象的时候,只能通过这个父类变量调用父类的成员,子类独有的成员无法调用

子类变量不能指向1个父类对象

必须要有继承关系,才可以使用强制转换

如果一个父类变量指向的就是一个父类对象,将这个父类对象转换为子类对象的会报异常

如果一个父类变量指向一个子类对象,那么可以将这个父类变量转换为子类对象

is 判断变量是否是指定的类型

如果没有继承关系,表达式的值永远都是false

as 如果转换成功,引用指向变量名,如果转换失败,不报异常,返回null

虚方法,virtual 关键字.

如果子类重写了父类的虚方法,那么通过父类变量来调用这个方法的时候,会调用子类的

多态,同一种行为,对于不同的事物,有不同的表现形式

多太的表现形式之一 将父类类型作为方法的参数

屏蔽多个子类的不同,将多个子类当成父类来处理

继承是为了多态,多态是为了扩展

时间: 2025-01-03 00:09:58

黑马自学9.28学习的相关文章

黑马自学10.10学习

数据库 数据类型 varchar 表示可变的 分离数据库:是将当前数据库文件和数据库引擎关系断开,没有任何关系了,这样我们就可以随意的拷贝,剪切 在数据库文件上右键-->任务-->分离-->勾选”删除链接”-->确定 脱机:告诉数据库引擎,暂停操作当前数据库,也可以随意拷贝,剪切 附加:把已经分离的数据库文件,重新让数据库引擎管理 主键:标识一张表里面数据行 主键分为逻辑主键和业务主键 业务主键就是具有真实意义的,比如身份证,银行卡,缺点:一旦变化,难以维护 逻辑主键:没有任何实际

黑马自学9.29学习

抽象类 抽象方法用abstract修饰 抽象方法不能有方法体 抽象方法不能实例化,因为有抽象成员,而抽象成员不能有方法体的 子类必须重写父类的抽象方法 在子类中无法通过base关键字调用父类的抽象方法 抽象方法是光说不做的,只是定义了具有这样的行为,但是具体的实现交给了子类 抽象类中可以拥有非抽象成员,为了继承给子类 抽象类中可以拥有虚方法 子类必须重写父类的方法,父类没有必要实例化,就用抽象类 抽象类是被继承的,是为了多态 抽象成员不能是私有的 接口 是一个特殊的抽象类 使用interface

黑马自学9.24学习

交错数组  行固定,但是每一行的列不固定 二维数组  行固定.列固定 构造方法 访问修饰符一般情况下是public,没有返回值,方法名与类名一样 构造函数是创建对象的时候CLR自动调用 程序员无法手动调用 构造函数可以有参数 如果我们希望在创建这个类的对象的同时需要执行一些代码,我们就可以把这些代码写到构造函数中 This关键字,代表当前对象,当前运行在内存里的那个对象 被partial关键字修饰的类.叫做部分类,或者伙伴类 C#编译器在编译的时候会将伙伴类编译成一个类,所以在另一个伙伴类中定义

黑马程序员_学习IOS之字典常用的方法

字典是无序的 数组是有序的.字典分为:可变字典和不可变字典  不可变字典对象 NSDictionary * dict = [[NSDictionary alloc]initWithObjectsAndKeys:@"one",@"1",@"two",@"2",@"three",@"3",@"four",@"4", nil]; //value = ke

黑马程序员——C学习总结之数组排序算法实现

发表试试 黑马程序员--C学习总结之数组排序算法实现,布布扣,bubuko.com

黑马程序员_OC学习笔记之Foundation框架集合类

OC--集合类 1.OC集合类包括NSArray,NSSet,NSDictionary都是以面向对象的方式操作数组,而且OC数组不像C语言中的数组只能存放同一种数据类型,它可以存放任意类型的对象,但是不能存放非OC对象类型如基本数据类型int,struct,enum等 2.OC数组是以对象的方式存在,因此在创建的时候需要为创建的对象前面加* 3.NSArray数组一旦创建就决定了是不是可变,而且永远是可变或不可变 4.NSArray数组和子类NSMutableArray的基本操作: 1>使用NS

黑马程序员_OC学习笔记之description方法和sel

OC--description方法 1.Description方法包括类方法和对象方法.(NSObject类所包含) -description(对象方法) 2.使用NSLog和@%输出某个对象时,会调用对象的description方法,并拿到返回值进行输出. +description(类方法) 3.使用NSLog和@%输出某个对象时,会调用类对象的description方法,并拿到返回值进行输出,把整个对象一次性打印出来,打印对象使用%@. 4.使用@%打印对象如(“@%”,P)默认打印输出为<

黑马程序员_OC学习笔记之@property和@synthesize

[objc] view plaincopyprint? <span style="font-size:24px;">#import <Foundation/Foundation.h> @interface Person : NSObject { int _age; int age; int _height; int height; int _weight; int weight; int _money; int money; } @property int ag

黑马程序员——Foundation学习笔记(NSSet和NSMutableSet)

==========android培训.ios培训.java培训.期待与您交流========== 一.NSSet: NSSet NSSet里面存储的元素没有顺序,NSArray中的元素有顺序. NSSet *s = [NSSet set]; // 创建一个空的Set,永远是空,不可变. NSSet *s2 = [NSSet setWithObjects:@"jack",@"rose",nil]; NSString *str = [s2 anyObject]; //