1.继承1.1继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产。在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。 1.2继承的格
在现实生活中,继承一般指的是子女继承父辈的财产。在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。
1.2继承的格式 class 子类 extends 父类{
}
1.3继承的特点
1、在Java中,类只支持单继承,不允许多继承,也就是说一个类只能有一个直接父类,例如下面这种情况是不合法的。
class A{}
class B{}
class C extends A,B{} // C类不可以同时继承A类和B类
2、多个类可以继承一个父类,例如下面这种情况是允许的。
class A{}
class B extends A{}
class C extends A{} // 类B和类C都可以继承类A
3.在Java中,多层继承是可以的,即一个类的父类可以再去继承另外的父类,例如C类继承自B类,而B类又可以去继承A类,这时,C类也可称作A类的子类。下面这种情况是允许的。
class A{}
class B extends A{} // 类B继承类A,类B是类A的子类
class C extends B{} // 类C继承类B,类C是类B的子类,同时也是类A的子类
4、在Java中,子类和父类是一种相对概念,也就是说一个类是某个类父类的同时,也可以是另一个类的子类。例如上面的这种情况中,B类是A类的子类,同时又是C类的父类
//为什么要创建无参构造方法
1.4继承中成员变量的特点
A:子类只能获取父类非私有成员
子父类中成员变量的名字不一样直接获取父类的成员变量
子父类中成员变量名字是一样的获取的是子类的成员变量
B:就近原则:谁离我近我 就用谁
如果有局部变量就使用局部变量
如果没有局部变量,有子类的成员变量就使用子类的成员变量
如果没有局部变量和子类的成员变量,有父类的成员变量就使用父类的成员变量
C: super:可以获取父类的成员变量和成员方法,用法和this是相似的
1.5方法重写的应用场景&注意事项
方法重写的应用场景:当父类的方法不能完全满足子类使用的时候,既可以保留父类的功能(沿袭、传承),还可以有自己特有的功能
方法重写的注意事项:
不可以重写父类私有的成员方法,压根就看不到父类的私有成员
子类重写父类方法,权限必须大于等于父类方法的权限
注解
@Override:方法重写,
1.6继承优缺点
A:优点
提高了代码的复用性
提高了代码的可维护性
B:缺点:
类的耦合性增强了
开发的原则:高内聚低耦合
内聚:就是自己完成某件事情的能力
耦合:类与类的关系
2.this与super区别
this:当前对象的引用
调用子类的成员变量
调用子类的成员方法
在子类的构造方法第一行调用子类其他构造方法
super:子类对象的父类引用
调用父类的成员变量
调用父类的成员方法
在子类的构造方法第一行调用父类的构造方法
2.1属性的区别:
this访问本类中的属性,如果本类没有此属性则从父类中继续查找。
super访问父类中的属性
2.2方法的区别
this访问本类中的方法,如果本类没有此方法就继续查找父类。
super访问父类中的方法。
2.3构造的区别
this调用本类构造,必须放在构造方法的首行。
super调用父类的构造,必须放在子类构造方法的首行。
2.4其他区别
this表示当前对象。 spuer不能表示当前对象
this.变量 调用当前对象的变量 spuer.变量直接调用的是父类中的变量
this(参数) 调用(转发)的是当前类中的构造器 super(参数)用于确认要使用父类中哪一个构造器
3.构造方法
3.1什么是构造方法?
创建对象时所调用的方法 无参构造方法 : public 类名(){ } 带参构造方法: public 类名(参数列表){ }
3.2构造方法的格式特点?
特点一:方法名与类名相同
特点二:没有返回值 没有void
特点三:没有具体的返回值 (不能return带回结果数据)
3.3构造方法执行时机
创建对象时会自动调用。每创建一次对象,就会执行一次构造方法(注意不能手动调用构造方法);
为什么要使用无参构造?
1.无参构造运行是需要往上一级一级找无参,甚至找到object
2.如果其中一级只有有参,没有无参,会发生错误。但只有无参,没有有参一定不会出错。
3.在以后的Java开发中,若一个POJO类要有带参构造方法,要记得先写无参构造方法。防止类追溯时找不到上级,报错。
4.本质上构造方法的作用是:创建对象
总结:
1.记住:this代表本类对象的引用;谁调用方法,谁就是方法中的this
2.本质上构造方法的作用是:创建对象
3.还是需要多复习才能记住