面向过程和面向对象的区别:
*
* 继承: extends
* 继承父类非private的属性和方法 (一般继承方法)
*
* 继承的使用场景:
*
*
* this和super
* 1 都可以代表对象,对象可以调用属性和方法 this.xx super.xx
* 2 构造方法里面怎么用。 this() super() 代表调用构造方法,并且只能在构造方法里面被调用,而且必须放在第一行
*
*
* 抽象类:
* 抽象类和普通类的区别:
* 1 普通类里面不能有抽象方法、抽象类里面可以有普通方法
* 2 抽象类里面可以有构造方法,但是不能实例化对象
* 3 普通类继承了抽象类,必须重写抽象方法
面向过程: C语言, 以方法为主体,所有的功能都是通过方法之间的调用完成的。
* 面向对象: java,C++、C#、python、javascript 以对象为主体、对象和对象之间的调用。
*/
/**
* 继承: 子类拥有父类的属性和方法。(面向对象的三大特征之一)
* 子类:
* 父类: (基类、超类)
*
*
* 特点:
* 1 子类不能继承父类的private属性和方法
* 2 类的继承是单继承,但是可以多重继承。
* 3 一般属性用private修饰,方法用public修饰,所以我们以后开发的工作里面,主要是继承方法的。
*
*
*
* 格式: extends
* public 子类 extends 父类{
*
* }
*
* 使用场景:
* 如果多个类有共同的属性和方法,那么我们可以把这些类中共同的属性和方法放到父类中,让这些类(子类)去继承父类,减少代码的重复性
this、super
* 都可以代表对象,对象可以调用属性和方法 this.xx super.xx
* 构造方法里面怎么用。 this() super() 代表调用构造方法,并且只能在构造方法里面被调用,而且必须放在第一行
*
* this:
* 1 对象本身,new的对象就是这个this
* 2 this() 调用构造方法,可以有参数,一般只在构造方法里面
* 3 如果构造方法里面调用this(),只能放在第一行,否则报错。
*
*
* 构造方法补充:
* 如果类里面没有写构造方法,那么系统默认给一个无参构造方法。
* 如果类里面有有参构造方法,那么系统不会给无参构造方法。
*
* super
* 1 代表的就是父类对象
* 2 子类的构造方法里面,默认第一句会添加super()
* 3 如果子类构造方法手动调用super(),必须放在第一行
静态>普通
* 父类>子类的
* 代码块>构造方法
*
*
* 父类静态代码块
* 子类静态代码块
* 父类代码块
* 父类构造方法
* 子类代码块
* 子类构造方法
抽象类: 把具有共同特征的类提取出来就是抽象类。
*
* 特点:
* 1 不能实例化对象。
* 2 抽象类就是当爹的。(抽象类就是用来被继承)
*
* 格式:
* 在创建类的时候,class前面加上abstract
*
*/
/**
* 抽象方法:被abstract修饰的方法就叫抽象方法,没有方法体。
* 如果普通类继承了抽象类,那么抽象类中的抽象方法必须被重写,否则报错
*/
/**
* 抽象类和普通类的区别:
* 1 普通类里面不能有抽象方法、抽象类里面可以有普通方法
* 2 抽象类里面可以有构造方法,但是不能实例化对象
方法重写: 在继承或者实现关系里面,如果子类和父类的方法名、参数列列表、返回值完全一致,就是方法重写。修饰符>父类,异常<父类
*
* 1 在继承或者实现关系里面.
* 2 方法名相同
* 3 参数列表
* 4 返回值
* 5 修饰符
* 6 异常
*
* 方法重写的目的?
* 父类的方法不适用子类,那么子类就要考虑重新定义这个方法
*