精华内容
下载资源
问答
  • 子类调用父类方法

    2019-09-26 22:42:02
    1.方式一子类调用父类方法,包含2中形式的调用。一种形式是在类内部通过继承的方式调用父类的方法,另外一种形式是子类实例化后之后通过继承的方式来调用父类的方法。如下图所示: 注意一点,在...

    当有相同的属性或者方法是this子类表示调用自己的属性或者方法,

    super调用父类的属性或者方法。

    当子类调用的属性方法在子类中不存在时,那么this和super都是调用父类的属性或者方法

    1.方式一
    子类调用父类的方法,包含2中形式的调用。一种形式是在类内部通过继承的方式调用父类的方法,另外一种形式是子类实例化后之后通过继承的方式来调用父类的方法。如下图所示:

    Python_子类调用父类的方法
    注意一点,在子类内部通过继承的方式调用父类的属性时,必须要带上self位置参数(self只在实例化过程中和在实例调用属性时才能省略(self本来的含义就是指向实例自己));而实例在通过继承调用父类的属性或方法时,则不用传self参数,因为实例已经实例化了呀!!!
    该部分的代码块如下:注意一点,在子类内部通过继承的方式调用父类的属性时,必须要带上self位置参数(self只在实例化过程中和在实例调用属性时才能省略(self本来的含义就是指向实例自己));而实例在通过继承调用父类的属性或方法时,则不用传self参数,因为实例已经实例化了呀!!!

    该部分的代码块如下:

    class Person():
        "人的类"
        def __init__(self,name,age,sex):
            self.name = name
            self.age = age
            self.sex = sex
        def eat(self):
            print("%s开始吃饭了"%self.name)
    class Student(Person):
        "学生类"
        def __init__(self,name,age,sex,classnaem):
            #子类调用父类的构造函数进行初始化
            Person.__init__(self,name,age,sex)  #通过子类把参数传给父类(self不能少,self只有在实例化和实例调用类时才能省略,此处不是)
            self.classnaem = classnaem
        def course(self):
            print("%s在%s上课"%(self.name,self.classnaem))
        def done(self):
            print("这个学生在干嘛?")
            #子类调用父类方法
            Person.eat(self)    #子类在调用父类方法必须要传self
    #实例化一个子类
    student = Student("周明",23,'男',"11届土木3班")
    #调用子类本身的方法
    student.course()
    #通过子类调用父类的方法--->实例化之后来调用父类的方法
    student.eat()
    #调用子类的方法,在子类方法中调用了子类的方法,与student.eat有区别
    student.done()

    此时如果父类的名称更改了,那么在子类中所有用到父类名的地方均要进行修改了。所有此种方法不便于后期维护,为此我们选择方式二。
    2.方式二
    使用super来代替父类名,以方便代码的后期维护,见下图:

    Python_子类调用父类的方法
    使用super的好处,一是可以代替父类名,这样后期父类名更改了,我们只需要更改子类名称后面的父类名即可,子类中其他的父类名可以不用更改;二是使用了super后,调用父类方法时可以不传参数self。
    该部分的代码块为:

    class Person():
        "人的类"
        def __init__(self,name,age,sex):
            self.name = name
            self.age = age
            self.sex = sex
        def eat(self):
            print("%s开始吃饭了"%self.name)
    class Student(Person):
        "学生类"
        def __init__(self,name,age,sex,classnaem):
            #子类调用父类的构造函数进行初始化
            # Person.__init__(self,name,age,sex)  #通过子类把参数传给父类(self不能少,self只有在实例化和实例调用类时才能省略,此处不是)
            #使用super来替换父类名
            super().__init__(name,age,sex)  #通过子类把参数传给父类,用super可以省略self
            self.classnaem = classnaem
        def course(self):
            print("%s在%s上课"%(self.name,self.classnaem))
        def done(self):
            print("这个学生在干嘛?")
            #子类调用父类方法
            super().eat()    #子类在调用父类方法,使用super可以省略self
    #实例化一个子类
    student = Student("周明",23,'男',"11届土木3班")
    #调用子类本身的方法
    student.course()
    #通过子类调用父类的方法--->实例化之后来调用父类的方法
    student.eat()
    #调用子类的方法,在子类方法中调用了子类的方法,与student.eat有区别
    student.done()


    参考:https://www.cnblogs.com/a8457013/p/8438490.html

    转载于:https://www.cnblogs.com/klb561/p/11361585.html

    展开全文
  • 如题,子类Print 方法调用父类的 see方法,父类的see方法调用 父类和子类共有的方法(即父类的Show方法,以及子类重写后的Show方法),请问最后返回的是哪个结果。 测试 parent 类 public class Parent { public ...

    如题,子类Print 方法调用父类的 see方法,父类的see方法调用 父类和子类共有的方法(即父类的Show方法,以及子类重写后的Show方法),请问最后返回的是哪个结果。

    测试

    parent 类

    public class Parent {
        public String Show(){
            return "there is parent show";
        }
    
        public String see(){
            return Show();
        }
    
    }
    

    child 类

    public class Child extends Parent{
        @Override
        public String Show(){
            return "there is child show";
        }
    
        public String Print(){
            return super.see();
        }
    }
    

    Test 类

    public class Test {
        public static void main(String[] args) {
            Child child=new Child();
            System.out.println(child.Print());
        }
    }
    

    运行结果

    在这里插入图片描述

    问题产生的地方。

    org.apache.catalina.core internalDoFilter 方法
    在这里插入图片描述
    这里调用父类 父类 FrameworkServletservice 方法,之后又调用 父类 HttpServletservice 方法,我测试的时候用post方法,此时进入了如下界面
    在这里插入图片描述
    跟踪测试的时候发现没有进入该类的doPost方法中,而是进入了子类的doPost方法,顾有此疑问。

    展开全文
  • layer.open 调用子类窗口方法, 子类调用父类方法 <!-- 父类 --> var index = layer.open({ type : 2, title : title, shadeClose : true, shade : 0.8, ...

    layer.open 调用子类窗口方法, 子类调用父类方法

    <!-- 父类 -->
    var index = layer.open({
                   type : 2,
                   title : title,
                   shadeClose : true,
                   shade : 0.8,
                   area : [ '500px', '380px' ],
                   content : _BasePath + 'z/b/b/l',
                   btn: ['进入', '关闭'],
                   btn1: function(){
                   	    // 父类调用子类方法
                   	   var fh = window["layui-layer-iframe" + index].onEnter();
                   	   alert(JSON.stringify(fh))
                    },
                   btn2: function(){
                       layer.closeAll(); //关闭窗口
                   }, 
                   end:function(){]
                      // 清除session里缓存
                   	  document.location.href= _BasePath + "logout";
                   }
             });  
         <!-- 子类页面 -->    
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags"%>
    <html lang="zh-CN">
    <head>
    <title></title>
    <meta charset="utf-8">
    <%
    	String path = request.getContextPath();
    	String basePath = path + "/";
    %>
    <base id="basePath" href="<%=basePath%>">
    <script type="text/javascript">
        var _BasePath = "<%=basePath%>";
    </script>
    <jsp:include page="/WEB-INF/head.jsp" />
    </head>
    <script type="text/javascript">
    
      function onEnter(){
    	  var fh = {
    	      msg:"error"
    	  };
    	  return fh;
       }
    </script>
    <body>
    <div class="prop-window"></div>
    </body>
    </html>
    
    
    
    
    展开全文
  • 4. python 子类调用父类方法

    假设存在 Person 与 Student 两个类:

    class Person(object):
        def __init__(self):
            self.name = "Tom"
        def getName(self):
            return self.name
    
    class Student(Person):
        def __init__(self):
            self.age = 12
        def getAge(self):
            return self.age
    
    if __name__ == "__main__":
        stu = Student()
        print stu.getName()

    运行以上代码会报以下错误

    Traceback (most recent call last):
      File "test.py", line 18, in <module>
        print stu.getName()
      File "test.py", line 6, in getName
        return self.name
    AttributeError: Student instance has no attribute 'name'

    报错原因:其他语言(java、php)有所不同,尽管 Student 类继承了 Person 类,但是并没有调用父类的 __init__() 方法,所以在此时子类是不可调用父类的方法的。

    方法一:调用未绑定的父类的构造方法

    class Person(object):
        def __init__(self):
            self.name = "Tom"
        def getName(self):
            return self.name
    
    class Student(Person):
        def __init__(self):
            Person.__init__(self)
            self.age = 12
        def getAge(self):
            return self.age
    
    if __name__ == "__main__":
        stu = Student()
        print stu.getName()

    在调用一个实例的方法时,该方法的 self 参数会被自动绑定到实例上(称为绑定方法)。但如果直接调用父类的方法(比如 Person.__init__()),那么就没有实例会被绑定,这样就可以自由的提供需要的 self 参数,这种方法就称为未绑定方法。

    通过将当前的实例作为 self 参数提供给未绑定方法, Student 类就能使用父类构造方法的所有实现,从而 name 变量被设置。

    方法二:使用 super 函数

    class Person(object):
        def __init__(self):
            self.name = "Tom"
        def getName(self):
            return self.name
    
    class Student(Person):
        def __init__(self):
            super(Student, self).__init__()
            self.age = 12
        def getAge(self):
            return self.age
    
    if __name__ == "__main__":
        stu = Student()
        print stu.getName()

    super函数会返回一个super对象,这个对象负责进行方法解析,解析过程其会自动查找所有的父类以及父类的父类。

    super函数比在子类中直接调用未绑定方法更直观,但是其最大的优点是如果子类继承了多个父类,它只需要使用一次super函数就可以。

    展开全文
  • 子类调用父类方法时的内存如何分配,当方法区的子类载入方法时,会不会把父类的方法一同载入进去?
  • C++基础之子类调用父类方法

    万次阅读 2018-05-29 20:50:52
    25行想通过子类调用父类函数fun(int i),通过B1.A::fun(1),看到过有的人说用B1.parent::fun(1) 试了下发现出错3. 子类和父类函数名一样的函数fun,如果参数不一样,不管加不加virtual,当子类调用fun()时,会先...
  • Python 子类调用父类方法

    千次阅读 2014-12-08 17:09:12
    Python在继承时,如果子类重写了init()函数,则...那么有没有比较方便的方法来从子类调用父类呢?  第一种是直接使用父类的类名来直接调用。(Python3.3) [python] view plaincopyprint?
  • python类子类调用父类方法总结

    千次阅读 2018-12-25 17:19:18
    class Animal(): def __init__(self, age): self.age=age class Cat(Animal): def __init__(self, age): self.name='lxq' ... # 以下是3种调用父类方法的写法 # 1.父类名.父类方法(self) #...
  • 假设A是父类,B是继承A的子类,那么B如果要调用A的a方法,应该这样:B b=new B();b.a();一直都说this指的是当前对象,super指的是父类对象。但是对这个this理解还是不透彻,今天看effective java 第14条,有个例子...
  • 父类: ``` ... public class Parent { public void print(){ System.out.println(this);...子类: ...**为什么打印的是子类对象的地址,在父类方法中打印this对象不应该打印的是父类对象的吗??**
  • 子类调用父类方法:c++和java的不同

    千次阅读 2014-01-31 14:35:47
    子类调用父类方法:c++和java的不同   bool GameScene::init(){ if (!Scene::init()) { return false; } } 我自定义了一个场景,在场景的初始化中,有这么一句: Scene::init() 到这里,我百思不得其解,为...
  • 子类调用父类方法(super关键字)

    千次阅读 2018-02-28 21:36:59
    package testextends; public class Pad3 extends Computer3{ //子类:平板电脑 String sayhello(){ //重写父类方法‘打招呼’ ...//调用父类方法并添加字符串 } public static void main(Strin...
  • 基础不扎实的朋友应该会有一个疑问,当super和this都可以用的时候,到底我们是用super调用父类方法还是用this呢?这里其实是分两种情况的:当子类重写了父类的方法时,如果需要用到父类的方法时,才要用super,表明...
  • Python学习笔记--子类调用父类方法

    千次阅读 2013-07-31 07:49:54
    Python在继承时,如果子类重写了init()函数,则父类的init()...那么有没有比较方便的方法来从子类调用父类呢?  第一种是直接使用父类的类名来直接调用。 class Parent: def __init__(self): print('This is pare
  • public class T1 { private int a=6; public void ha(){ System.out.println(this.a); } }   public class T2 extends T1{ ...结论:子类调用父类方法时,方法中的变量用父类的  
  • 子类调用父类方法中的this

    千次阅读 2013-09-09 22:16:44
    一直都说this指的是当前对象,super指的是父类对象。但是对这个this理解还是不透彻,今天看effective java 第14条,有个例子一直不理解: package com.zgd; public class SuperTest { public static void main...
  • 运行环境 idea 2017.1.1 spring 3.2.9.RELEASE 需求背景 需要实现一个功能,该功能...A、B分别继承Base,重写BaseMethod方法,在调用super.BaseMethod()的基础上补充自己的差异代码 错误实现与描述 1、在Base基类中...
  • 类的继承 方法的重写 子类调用父类方法 多态 虚函数 虚函数示例 纯虚函数 相关代码
  • 子类重写方法的返回值类型申明要么与父类一样,要么比父类方法返回值类型范围更小。 子类重写方法的修饰符权限应该与父类被重写方法的修饰符权限相同或者更大。 子类重写方法申明抛出的异常应该与父类被重写方法申明...
  • 本文实例讲述了Python实现子类调用父类方法。分享给大家供大家参考。具体实现方法如下: python和其他面向对象语言类似,每个类可以拥有一个或者多个父类,它们从父类那里继承了属性和方法。如果一个方法在子类的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,967
精华内容 7,586
关键字:

子类调用父类方法