8yue25
构造方法和析构方法
构造方法定义
1.构造方法必须与类重名;
2.构造方法没有返回值,但可以有参数;
3.构造方法可以有多个重载;
4.不带参数的构造方法称为默认构造;
总结
1.构造方法的本质是一个构造器,是为了类的实例化而产生;
2.构造方法是一种特殊的方法,它没有返回值,它必须与类重名
,它只能在初始化的时候被系统自动执行,外部不能调用;
3.系统会默认的为你的类添加一个无参构造方法;
4.如果将构造函数设为private,则不能被外部实例化;
5.如果类里面有带有参数的构造方法,想调默认构造时,必须把
默认构造显示的写出来;(结构体不用写)
析构函数
1、只有类才有析构方法,一个类有一个
2、无法继承重载
3、无法调用析构
4、系统自动调用,当对象被销毁时
面向对象三大特性 :封装继承多态
一、封装
封装是实现面向对象程序设计的第一步,封装就是 将数据或函数等集合在一个个单元(类)中;
封装的意义在于保护或者防止保护代码(数据)被我们无意破坏
封装就是对类成员的再次包装,属性就是对字段的再次包装;
二、继承(类名后面加冒号 ":")
继承用于创建可重用、扩展和修改在其他类中定义的行为的新类。
被继承的类称为“基类 ”
继承这些成员的类称为“派生类 ”
派生类只能有一个直接继承(单继承);可用接口实现多继承
继承是可传递的
例如:B继承于A C继承于B C有AB里面所有东西
如果A继承于B,那么A对象可以转化为B
基类有的,派生类都有;派生类有的,基类可能没有。
派生类可以赋值给基类,而基类不能赋值给派生类。
分析问题的时候可能从最基础的子类开始,找到共同的东西写一个父类
里氏转化
里氏转换的作用是消除不同子类之间类型的差异,把其类型转换为统一的数据类型,这样就可以写出一套
通用的代码,这样即可以最大限度的重用代码,同时也提高了程序开发的效率;
原则一、子类对象可以直接赋值给父类(掩盖原来真实类型,本质不变(xStudent))
People people = new Student();
转换后可以调用父类里面的公有成员,子类里面的公有成员调不到.
原则二、父类可以转换成子类,这样就可以调到子类里面的公有成员了(还原出真是类型)
里氏原则一后,想把Student转化回来用子类里面的成员,使用as强转,is判断
例子:把刀打包装成箱子带走,这个过程是原则一,
到目的地之后,把刀拿出来,还原刀 ,是原则二
is 和 as
as是转换运算符,转换成功,就转换成as后面的类型,否则返回null
is用来判断 是否是子类成员
this和base(两个在静态类里面都不能使用)
this.当前调用对象
bsae 当前直接基类对象
:base 在构造函数里
new可以用来:1、实例化对象 2、方法转换