JAVA基础(十)继承
继承 自己理解 ?????????????????????? 获得父类的功能,强大自己,只能单向继承,class子类extends父类; ??????????? 重写:当子类需要父类的功能,当子类特有的功能与父类有元素或方法重名时,子类要继承父类的元素,就需要super. ????????? 父类中的成员变量或者方法名.在main中调用子类也会获得父类的元素或者方法 当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容。 继承: 定义:继承 就是让类与类之间产生关系-->父子关系 格式:class 类名1 extends 类名2{ ???????????? ???????????? } 类名1 继承于 类名2 类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类所有可继承的属性和方法。 继承的好处和弊端: 好处: ?????? 1.提高了代码的复用性 ????????? 2.提高了代码的维护性 ??????????? 3.让类与类之间产生了关系 是多态的前提 弊端:?? ????????????? 1.类的耦合性增强了 java中类的继承特点: ???????????? .java中类只支持单继承 不支持多继承 ????????????? .java支持多层继承(继承体系) ????????????? .一个父类 可以有多个子类 注意事项: ?????????????? 1.不能因为部分共性的内容 而盲目继承 ?????????????? 2.子类只能继承父类非私有的成员(成员变量 成员方法) ???????????????? 3.父类的构造方法 不能被子类继承 但是可以通过super()进行调用 ???????????????? 4. 子类在继承父类的时候,会自动拥有父类的成员。 ??????????????? 5.一个类只能继承一个父类 ???????????????? 6.一个父类可以被多个子类继承。 多层继承: ????? ???????????? 在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的子类 继承-子父类中成员变量的特点以及重写在子类中,访问父类中的成员变量格式: ???????????????????? super.父类中的成员变量 ????????????????????? super只能写在子类里面 ????????????????????? main方法调子类,同时也能获得父类属性 ? 建父类 public class Fu { ?int i=1; ???????? public void eat() { ??????? ?//重写 ??????? ?System.out.println("哈哈吃饭"); ???????? } } 键子类 关联父类 // 继承父类 public class Zi extends Fu{ ???? int i=2; ???? public void show () { ??? ?int? i=3; ??? // System.out.println(i);//结果为3?? 就近元素 结果为3 ??? ?//System.out.println(this.i); //结果为2? this指本类,结果为2 ??? ?//System.out.println(super.i)//结果为1?? 父类 ? ???//子父类中出现了同名的成员变量时 ??????? //在子类中需要访问父类中非私有成员变量时,需要使用super关键字 ??????? //访问父类中的i ? ???? } ? ?//重写 ? ???? public void eat() { ??? ?super.eat();//获得父类的功能 ??? ?System.out.println("xix"); ??? ? ???? } } ? 测试 //在继承中 /* 子类和父类出现重名成员变量是? 如果子类有,调子类的; ???????????????????????????????????????????????????????????????????????????????????????????????????????????? 如果子类没有,调父类的;*/ public class demo01 { ? public static void main(String[] args) { ???? Zi z = new Zi();//创建子类对象 ???? System.out.println(z.i);// 结果为2 就近原则 //重写 ???? z.eat(); /*子类有eat方法 父类有eat方法 l? 子父类中成员方法的特点 当在程序中通过对象调用方法时,会先在子类中查找有没有对应的方法,若子类中存在就会执行子类中的方法,若子类中不存在就会执行父类中相应的方法。 l? 成员方法特殊情况——覆盖 子类中出现与父类一模一样的方法时,会出现覆盖操作,也称为override重写、复写或者覆盖。 ?? 为了能够同时获得子类父类的方法(功能),就需要子类继承父类的功能super.eat();//获得父类的功能 ??? ? */ ? } ? } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |