赞
踩
在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。
格式:
class 子类 extends 父类 {}
继承的特点:
错误示例:
class A{}
class B{}
class C extends A,B{} // C类不可以同时继承A类和B类
正确示例:
class A{}
class B extends A{}
class C extends A{} // 类B和类C都可以继承类A
class A{}
class B extends A{} // 类B继承类A,类B是类A的子类
class C extends B{} // 类C继承类B,类C是类B的子类,同时也是类A的子类
继承中成员变量的特点:
方法重写(override):只有有子父类关系 才会存在 所有东西全部相同
方法重载(overload):方法名相同 参数列表不同 与返回值无关
方法重写的应用场景:
当父类的方法不能完全满足子类使用的时候,既可以保留父类的功能(沿袭、传承),还可以有自己特有的功能。
方法重写的注意事项:
不可以重写父类私有的成员方法,压根就看不到父类的私有成员。
子类重写父类方法,权限必须大于等于父类方法的权限。
继承中构造方法的执行顺序
A:super(实参列表);语句 在子类的构造方法中使用,用来调用父类中的构造方法(具体哪一个由传递的参数决定),并且只能在构造方法第一行使用
B:this(实参列表); 语句 在类的构造方法中使用,用来调用本类中的其它构造方法(具体哪一个由传递的参数决定),并且只能在构造方法的第一行使用
/* * 继承中构造方法的执行顺序 * 在子父类中,创建子类对象,调用子类的构造方法, * 在子类的构造方法的第一行代码如果没有调用父类的构造或者没有调用子类的其他构造,则默认调用父类无参构造 * 为什么要调用父类构造? * 因为需要给父类的成员变量初始化 * 肯定会先把父类的构造执行完毕,在去执行子类构造中的其他代码 * * 我是父类无参构造 --- 我是子类有参构造 --- 我是子类无参构造 */ public class ExtendsDemo6 { public static void main(String[] args) { //Die d = new Die(); Zi6 z = new Zi6(); } } class Die6 { public Die6() { System.out.println("我是父类无参构造"); } public Die6(int num) { System.out.println("我是父类有参构造"); } } class Zi6 extends Die6 { public Zi6() { //super(1); //super(); this(1);//不会再调用父类的无参构造了 System.out.println("我是子类无参构造"); } public Zi6(int num) { //会默认调用父类无参构造 System.out.println("我是子类有参构造");
this 与 super 的区别
/* * this和super的区别 this:当前对象的引用 调用子类的成员变量 调用子类的成员方法 在子类的构造方法第一行调用子类其他构造方法 super:子类对象的父类引用 调用父类的成员变量 调用父类的成员方法 在子类的构造方法第一行调用父类的构造方法 */ public class ExtendsDemo7 { public static void main(String[] args) { Zi z = new Zi(); z.function(); } } class Die { int num = 10; public Die() { System.out.println("我是父类无参构造"); } public Die(int num) { System.out.println("我是父类有参构造"); } public void method() { System.out.println("我是父类的方法"); } } class Zi extends Die { //int num = 30; public Zi() { //this(1);//第一行不调用子类其他构造或者是父类构造,默认调用父类无参构造 super(); System.out.println("我是子类无参构造"); } public Zi(int num) { System.out.println("我是子类有参构造"); } public void method() { System.out.println("我是子类的方法"); } public void function() { //this.num = 50; //System.out.println(num); //this.method(); //super.num = 40; //super.method(); System.out.println(this.num); } }
继承优缺点
内聚:就是自己完成某件事情的能力
耦合:类与类的关系
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。