继承
生活中的继承,子辈可以使用(继承)父辈的资源。
程序中的继承:子类可以使用父类的属性和方法
继承可以减少代码的重复性。
优点:
1.可以使代码复用
2.可以提高开发的效率
3.是多态的前提
语法:
类继承另一个类语法
public class A extends B { }
读做:A 类继承B类,A类是B类的子类,B类是A类的父类。
1.继承后子类可以使用父类的属性和方法
2.不能多继承,只能单继承。
- A —> B ---->C
继承中属性的问题
1.子类不可以继承父类的=私有的属性。
2.父类不可以使用子类的属性。
3.如果子类和父类有相同的属性,默认使用子类自己的属性。
继承中方法的问题
1.子类可以使用父类非私有的方法
2.父类不能使用子类的方法和属性
3.如果子类和父类有相同的方法,默认使用子类自己得到方法()。
继承中构造方法的问题
1.构造方法都不能被直接调用
2.子类构造方法执行,会先调用父类的构造方法,因为子类构造方法有隐藏的super()调用父类的无参构造,且必须放在构造方法的第一行
3.即创建子类对象时,会先创建父类再创建子类对象。
创建对象的过程
重写
重载 重写 Overload
1.重写是发生在继承中,子父类中
2.重写要求子类重写父类方法
3.要求:访问修饰符,返回值类型,方法名,参数列表完全和父类一样,方法体不一样,
4.一般重写后,子类的方法都会有一个@Override
为什么要重写?
父类的方法不适合子类就需要重写‘(白话:在父类方法的基础上将方法改造成适合子类的)
this 和 super
this 是当前对象
调用对象的方法
this()调用自己的无参构造, this(有参)调用自己有参构造。
this可以调用父类属性。
super 是父类对像,可以调用父类的属性和方法,特殊的,也可以放在构造方法中调用父类的构造super() 调用父类无参构造,super(参数)调用父类有参数。
this | super | |
---|---|---|
属性 | 调用对象的属性 | 调用父类的属性 |
方法 | 调用对象的方法 | 调用父类的方法 |
构造方法 | 调用自己的有参构造和无参构造 | 可放在构造方法中调用父类的构造方法,可调用有参和无参构造方法。 |
访问修饰符
访问修饰符,也叫访问限定符,其实是控制权限,控制属性,方法,以及构造方法
public,protected,缺省(默认),private
当前类 | 当前包 | 不同包的子类 | 不同包非子类 | |
---|---|---|---|---|
public | √ | √ | √ | |
protected | √ | √ | 自己调用自己的属性不行,子类对象可以调用。 | |
默认 | √ | √ | ||
private | √ |
可访问的范围的:public > protected > package > private