结构体和类的区别以及抽象类和接口的区别
结构体和类最大的区别是在储存空间上
结构体是值类型,存在栈上
而类是引用类型,存在堆上
结构体中有面向对象思想中封装的特性,但是不具备继承和多态的特性
结构体不具备继承特性,所以不能用 protected 访问修饰符
结构体成员变量申明不能指定初始值,而类可以
结构体中不能申明无参构造函数,但是类可以
结构体中不能申明析构函数,但是类可以
结构体需要在构造函数中初始化所有成员变量,而类不用
结构体不能在内部申明和自己一样的结构体变量,而类可以
结构体可以继承接口,因为接口是行为的抽象
如何选择结构体和类
如果想要使用继承和多态时,直接使用类
对象如果是数据集合时,优先考虑结构体,比如位置、坐标等
从值和引用类型的区别上去考虑,如果经常被赋值传递并且改变赋值对象,原对象不想跟着变化时就用结构体,比如坐标、向量、旋转等
抽象类和接口的相同点
都可以被继承
都不能直接实例化
都可以包含方法申明
子类必须实现未实现的方法
都遵循里氏替换原则
抽象类和接口的区别
抽象类中可以有构造函数,接口不行
抽象类只能被单一继承,接口可以被继承多个
抽象类中可以有成员变量,接口不行
抽象类中可以申明成员方法,虚方法,抽象方法,静态方法;接口中只能申明没有实现的抽象方法
抽象类方法可以使用访问修饰符;接口中建议不写,默认为 public
如何选择抽象类和接口
表示对象的用抽象类,表示行为拓展的用接口
不同对象拥有的共同行为,一般用接口来实现
动物是一类对象,我们通常选择抽象类,而呼吸时一个行为,我们一般会选择接口
                    
                
                
            
        
浙公网安备 33010602011771号