精华内容
下载资源
问答
  • 创建对象调用方法
    千次阅读
    2020-05-16 16:43:54

    新手使用mockito框架笔记

    调用mock出来的对象前一定要指定返回,不然就会返回null

    when(mockObj.method(xxx)).thenReturn("xxxx")

    更多相关内容
  • 我只写了三个 麻烦大家看看 ,能否解惑。我是越学越感觉不理解的越多,苦恼。 // String 类 String s1 = "asd"; s1.replace("sd","dd");// replace()方法 直接... //调用append()方法 创建了个对象stringbuffer .

    我只写了三个  麻烦大家看看 ,能否解惑。我是越学越感觉不理解的越多,苦恼。

    // String 类
    String s1 = "asd";
    s1.replace("sd","dd");// replace()方法 直接s1.调用
    
    
    //StringBuffer 类
    StringBuffer stringbuffer = new StringBuffer("asd");
    stringbuffer.append("dsf");     //调用append()方法 创建了个对象stringbuffer
    
    
    //Date类  
    
    Date date = new Date();
    date.getime();     //调用getTime()方法 创建了个对象date

    String 类 是long包下的 不需要导包

    而其他两个是其他包下的 需要导包 

    这是个不同点 但是我还是不知道为啥String 调用类中的方法不需要创建对象

    创建对象  利用对象导包 是不是可以理解为 在一个类中想要调用另一个类的非静态方法 先创建对象 进行初始化  利用创建的对象进行导包  如下图:

    类名  变量名  = new 类名();
    变量名.方法();

     

    展开全文
  • ![图片说明](https://img-ask.csdn.net/upload/201812/14/1544788405_744691.png)![图片说明]... 怎么在定义的函数内调用类中的函数,在不用静态成员的情况下
  • 对象 调用方法

    千次阅读 2018-09-12 16:52:26
    class Cat: # 定义类 对象必须有对应的类 类名使用大驼峰命名法 # 定义对象方法 对象方法需要在对应的类中定义 def eat(self): # 定义...创建对象 cat1 = Cat() 调用对象方法 引用对象的变量名.方法名() ca...

    class Cat: # 定义类 对象必须有对应的类 类名使用大驼峰命名法
    # 定义对象方法 对象方法需要在对应的类中定义
    def eat(self): # 定义对象方法和定义函数类似,只不过对象方法的第一个形参必须是self
    print(“吃东西”)

    创建对象
    cat1 = Cat()
    调用对象方法 引用对象的变量名.方法名()
    cat1.eat() # 定义对象方法时必须设置第一个形参为self,但是调用时不要设置self对应的实参

    class Cat: # 定义类
    pass

    创建对象
    cat1 = Cat()
    定义属性 首次赋值就会被定义
    cat1.type = “猫”
    print(cat1.type)
    cat1.type = “卡通猫” # 再次赋值,只是改变记录的数据
    print(cat1.type)

    class Cat: # 定义类
    # 定义方法
    def eat(self):
    print(“吃东西”)

    同一个类可以创建多个对象
    创建对象
    tom = Cat()
    tom.eat() # 同一个类的不同对象都可以调用对象方法(可以有相同的行为)
    tom.type = “卡通猫” # 同一个类的不同对象中的属性记录的数据可能是不同的(每个个体对应的数据不同)
    print(tom.type)

    创建另一个对象
    jiafei = Cat()
    jiafei.eat()
    jiafei.type = “家猫”
    print(jiafei.type)

    class Cat:
    def introduce(self): # self 指的是 调用该方法的对象
    “”“自我介绍”“”
    print(“我是 %s” % self.type)
    self.age = 10 # self也可以作为对象来定义对象属性

    创建对象1
    tom = Cat()
    tom.type = “卡通猫”
    tom.introduce() # 解释器 会自动将调用方法的对象作为方法的第一个实参进行传递
    print(tom.age)

    创建对象2
    jiafei = Cat()
    jiafei.type = “家猫”
    jiafei.introduce()
    print(jiafei.age)

    class Cat:
    def init(self, type): # init可以设置自定义参数,用于实现属性的不同初始值
    # 初始化方法
    self.type = type

    def introduce(self):
        """自我介绍"""
        print("我是 %s" % self.type)
    

    创建对象1
    tom = Cat(“卡通猫”) # init自定义形参对应的实参在创建对象的()中传递
    调用对象方法
    tom.introduce()
    print(tom.type)

    jiafei = Cat(“家猫”)
    print(jiafei.type)

    class Cat:
    def init(self, name, age):
    self.name = name
    self.age = age

    def __str__(self):  # 实现该方法后,返回什么内容,打印对象时就显示对应的内容
        return "我的名字 %s, 年龄 %d" % (self.name, self.age)
    

    tom = Cat(“汤姆”, 60)
    print(tom)

    展开全文
  • java基础-反射3(反射,反射创建对象,操作对象属性,调用对象方法)前面通过学习,我们了解的运行时类型信息的基本原理,以及通过Class对象和反射来获取运行时类型信息。下面来了解通过反射来创建对象,以及操作...

    java基础-反射3(反射,反射创建对象,操作对象属性,调用对象方法)

    前面通过学习,我们了解的运行时类型信息的基本原理,以及通过Class对象和反射来获取运行时类型信息。下面来了解通过反射来创建对象,以及操作对象的属性和方法

    首先还是创建一个person类

    
    @Service
    public class Person1 extends PersronParent implements PersonInterfance ,Cloneable{
        public  String name;
        public  double weight;
        protected  double height;
        private Integer age;
    
        public Person1(){}
    
        protected Person1(String name){
        }
        public void publicShow() throws Exception{
            System.out.println("publicShow()");
        }
        protected void disPlay(){
            System.out.println("disPlay()");
    
        }
    
        private String privateShow(String paramter1,String paramter2) throws NullPointerException{
            StringBuffer stringBuffer  = new StringBuffer(paramter1);
            return stringBuffer.append(paramter2).toString();
        }
        @Deprecated
        private int testParamter(String paramter1,String paramter2) throws NullPointerException{
            return 1;
        }
    
        @Deprecated
        public int testPublicParamter(String paramter1,String paramter2) throws NullPointerException{
            return 1;
        }
    
        @Override
        public void parentSay(){
            super.parentSay();
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public double getWeight() {
            return weight;
        }
    
        public void setWeight(double weight) {
            this.weight = weight;
        }
    
        public double getHeight() {
            return height;
        }
    
        public void setHeight(double height) {
            this.height = height;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        @Override
        public String toString() {
            return "Person{" +
                    "name='" + name + '\'' +
                    ", weight=" + weight +
                    ", height=" + height +
                    ", age=" + age +
                    '}';
        }

    通过反射来创建对象

    通常在java中我们有以下4中方式创建对象

    1. 通过new 关键字 创建对象
    2. 通过Object clone();方法
    3. 通过反序列化
    4. 通过反射创建

    这里我们来了解通过反射来创建对象和调用方法

    首先我们来看通过反射来创建对象
    我们通过newInstance()来创建对象,如果对于无参数的构造方法我们直接用Class的对象的newInstance()就可以创建对象
    如果对于有参数的构造方法,我们需要先获取带参数的构造器(注意权限修饰符),然后通过构造器的newInstance()方法创建对象。

    public class TestReflect {
    
        public static void main(String[] agrs){
    
                Class<Person> personClass = Person.class;
                try {
                    /**
                     * 通过无参数的构造方法创建对象
                     */
                    Person personOne =   personClass.newInstance();
                    /**
                     * 通过有参数的构造方法创建对象
                     */
                    Constructor constructor = personClass.getDeclaredConstructor(String.class);
                    Person personTwo =   (Person) constructor.newInstance("带参数");
    
                } catch (InstantiationException e) {
                    e.printStackTrace();
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                } catch (NoSuchMethodException e) {
                    e.printStackTrace();
                } catch (InvocationTargetException e) {
                    e.printStackTrace();
                }
    
        }
    
    }
    

    运行结果如下
    这里写图片描述

    这样我们就可以通过反射来创建对象。
    通过反射创建对象后可以通过反射来给操作对象的属性

    通过反射操作对象属性

    上一篇文章说过,类的属性在反射中使用java.lang.reflect.Field表示,当然也使用这个类来操作对象的属性,在java中属性的访问涉及到权限修饰的修饰,具体如下:
    这里写图片描述

    所以在操作对象的属性的需要注意对目标类属性访问的权限,如下
    如果当前类对目标对象有访问的权限(如目标类属性为public)

    1. 通过Class对象的getField()获取Field。
    2. 然后通过Field的set()方法对目标对象赋值。

    如果当前类对目标对象没有访问的权限(如目标类属性为private)

    1. 通过Class对象的getDeclaredField()获取Field。
    2. 调用Field 的setAccessible(true)方法,设置为可访问(如果不设置为true,则在当前类中不能访问目标类的属性,在为目标对象赋值时会报错)
    3. 然后通过Field的set()方法对目标对象赋值。
    4. 调用Field 的setAccessible(false)方法复原。

    具体操作如下

    public class TestFileId2 {
        public static void main(String agrs[]) throws NoSuchFieldException {
            try {
                //获取Class 对象
                Class<Person> personClass  = Person.class;
                //创建目标对象(注意,我们这里直接用的object,更体现了运行时类型信息)
                Object person = personClass.newInstance();
                //在没有通过反射赋值之前
                System.out.println("person对象在没有赋值之前");
                System.out.println(person.toString());
                System.out.println();
    
                System.out.println("当前类可以操作目标类的属性:比如public权限的属性");
                //获取有权限操作的属性(当前类可以操作目标对象的属性:比如public)
                Field name = personClass.getField("name");
                //为person 对象 的 name属性赋值为 TestName
                name.set(person,"TestName");
                System.out.println(person.toString());
                System.out.println();
    
                System.out.println("当前类不能够操作目标类的属性:比如private权限的属性");
                Field age = personClass.getDeclaredField("age");
                //为person 对象 的 age 属性设置为可访问
                age.setAccessible(true);
                //为person 对象 的 age属性赋值为 10
                age.set(person,10);
                age.setAccessible(false);
                System.out.println(person.toString());
            } catch (InstantiationException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
    }

    运行结果如下
    这里写图片描述

    通过反射调用对象方法

    反射能够操作对象的属性,当然也可以操作对象的方法,方法通过java.lang.reflect.Method表示,由于访问权限的限制,对于方法也有如下操作
    如果当前类对目标对象有访问的权限(如目标类方法为public)

    1. 通过Class对象的getMethod()获取Method。
    2. 然后通过Method的invoke()方法对目标对象赋值。

    如果当前类对目标对象没有访问的权限(如目标类方法为private)

    1. 通过Class对象的getDeclaredMethod()获取Method。
    2. 调用Method的setAccessible(true)方法,设置为可访问(如果不设置为true,则在当前类中不能访问目标类的方法,在调用目标类的方法时会报错)
    3. 然后通过Method的invoke()方法对目标对象赋值。
    4. 调用Method的setAccessible(false)方法复原。

    具体操作如下:

    public class TestMethod2 {
        public static void main(String agrs[]) throws NoSuchFieldException, NoSuchMethodException, InvocationTargetException {
            try {
                //获取Class 对象
                Class<Person> personClass = Person.class;
                //创建目标对象
                Object person = null;
                person = personClass.newInstance();
    
                System.out.println("当前类可以操作目标类的方法:比如public权限的方法");
                //获取有权限操作的方法(当前类可以操作目标对象的方法:比如public)
                Method publicShow = personClass.getMethod("publicShow");
                //通过Method 的invoke 调用person 的 publicShow方法
                publicShow.invoke(person);
    
    
                System.out.println("当前类不能够操作目标类的方法:比如private权限的方法");
                Method privateShow = personClass.getDeclaredMethod("privateShow", String.class, String.class);
                //为person 对象 的 privateShow 方法设置为可访问
                privateShow.setAccessible(true);
                //通过Method 的invoke 调用person 的 privateShow方法
                String result = (String) privateShow.invoke(person, "参数1", "参数2");
                System.out.println(result);
            } catch (InstantiationException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
    
    }
    

    运行结果如下:
    这里写图片描述

    以上就是通过反射操作对象的基本方式。

    反射的基础知识就是以上几篇文章,反射相对于其他知识来说比较简单,但是反射应用很多,比如很多框架,以及java中的动态代理等都涉及到了,所以反射在java中还是很重要的。

    展开全文
  • 由输出结果可见,当创建子类对象时首先调用了父类的构造方法,再调用子类的构造方法,值得注意的是传给父类构造方法的this指针和传给子类构造方法的this指针完全相同,也就是说调用父类构造方法的并不是父类的对象,...
  • JS_创建对象+调用对象方法

    千次阅读 2017-07-07 14:12:06
    12th_test 这是一个标题 这是一段文字 var person = { //person是一个对象 firstName: "John", lastName: "Doe", ... toString: function() //toString()是person对象的一个方法 { return this.firs
  • Python创建对象:对象名称=类() class Point: pass p1 = Point() p2 = Point() 在创建对象时,Python解释器会自动执行以下操作: 1.创建对象----为对象在内存中分配空间; 2.初始化方法(init)—为对象的属性设置...
  • 然后用对象调用a.normalFunc(); 那么为什么静态方法可以通过类名直接调用,实例方法不可以通过类名直接调用呢?事实上在类加载的时候,类的相关信息都已经存进了方法区了。 这一个问题大多数人都可
  • Java中4种创建对象方法

    千次阅读 2022-04-23 18:20:10
    4种创建对象方法: ...最常见的Java 对象的构造方法,通过调用类提供的构造器创建对象。 2、使用 newInstance() 方法 Java 反射中有一个 newInstance() 方法,可以创建对象,步骤如下:获取要创建的类的 Cl
  • Java 编写一个类Letter,要求该类创建对象p,并调用方法printLetter输出英文字母表 如该博客对您有些许帮助请多点赞评论加收藏 class Letter { public Letter(){ //构造方法 System.out.println("对象...
  • Python如何使用类对象调用实例方法

    千次阅读 2020-05-06 15:29:40
    在前面的学习中,我总结了...我们知道,实例对象可以调用这三种方法,而类对象只能调用类方法和实例方法,既然如此为何我们还要研究类对象调用实例方法呢?我们先看一个例子: class Dog: def action(self): ...
  • 可以在不建立对象的情况下调用类成员吗? 非静态成员不能,非静态成员是随着对象存在而产生的,没有对象也就不会存在非静态成员,静态的可以,类名::成员名方式访问。 静态的成员变量和函数存在全局段,整个程序...
  • new创建对象是否调用构造函数和析构函数

    千次阅读 多人点赞 2019-11-18 19:43:25
    1.指针不会调用构造和析构函数,只是定义了一个指针,没有申请内存:...使用new创建对象时,申请分配内存,调用构造函数: 当我们使用new为指针开辟空间,然后用delete释放掉空间会分别调用构造和析构函数: ...
  • 子类继承父类时,创建对象,构造方法调用问题

    万次阅读 多人点赞 2017-11-03 21:05:00
    在学习继承的时候,遇到一些小问题,这里总结一下,有错误望指正: 先来看一段代码: //标准父类 class Father{ ... //构造方法 //空参 public Father(){ } //有参 public Father(String nam
  • java的类加载顺序和创建对象时的调用顺序类的加载顺序创建对象的过程注意 类的加载顺序 有父子关系的类在加载时 先调用父类静态初始化块,静态属性,但不包括静态方法,然后再是,子类静态初始化块,静态属性,但...
  • 2.实例化一个servlet 创建Servlet对象 3.init方法 做一些初始化工作..比如从web.xml文件中读取配置信息 4.service方法 来处理客户端请求 判断请求类型get 调用doGet,post 调用doPost 在该方法中完成 5.destroy...
  • JS创建对象的三种方法

    千次阅读 2022-05-30 16:41:23
    下面我会介绍三种创建对象方法。 一、通过字面量创建对象 其语法格式如下: var 对象名 = {}; // 创建了一个空对象 var 对象名 = { 属性名: 属性值, // 创建了一个属性 方法名: function () { // 创建了一个...
  • package zimu; public class A { public void f() { for (int i = 97; i <123; i++) { System.out.print((char)i); } ...
  • callComponentPB方法调用中会创建HttpProtobufComponentExecutor对象,并且调用invokeTainluRpcService方法,该方法由上面的mock逻辑模拟 */ Object result = this.callComponentPB("mdmQueryAcct", params); ...
  • 反射创建对象 当我们反射创建对象,一般采用 ...这样创建对象,但这样默认是用无参的构造函数,当我们想通过反射调用有参的构造函数去创建对象的时候 我们需要使用下面的方式 Class clazz = Clas
  • d = u2.connect() #该方法返回一个UIAutomatorServer类的实例 d(discription = 'Books').click() # ???wtf,怎么对象名字后面带个括号,什么操作? 为了搞懂这个原因,我把代码里原来正确的参数description随便改成...
  • 第7.14节 Python类中的实例方法详析

    千次阅读 2020-12-19 01:11:31
    第7.14节 Python类中的实例方法详析一、 实例方法的...定义实例方法与定义函数基本相同,只是Python要求实例方法的第一个形参必须为self,也就是实例对象本身,因此实例方法至少应该有一个self参数。关于self的说...
  • 对象方法调用

    千次阅读 2017-09-13 16:19:14
    第一章 类和对象 概念 类:具有相同属性和行为的一组对象的集合和抽象 系统定义的类 用户自定义的类 对象:具体的实例,类的实例化,有一组属性和方 法组成(万物皆对象) 关系 类的实例化是对象 对象的抽象是实例...
  • c++ 创建对象的三种方法

    万次阅读 2018-10-12 18:30:48
    转自:... c++有三种方法创建对象 结合代码来看 1 #include &lt;iostream&gt; 2 using namespace std; 3 class Test { 4 5 private: 6 public: 7 ...
  • 一般情况下,主方法是静态方法,所以可调用静态方法,主方法为静态方法是因为它是整个软件系统的入口,而进入入口时系统中没有任何对象,只能使用类调用。 package TomText; //使用do-while语句,完成简单的数据求和...
  • 一.Java反射拿到调用对象方法 1.通过Class.forName(“包名+方法的类名”)拿到方法对象; 如:Class&lt;?&gt; clazz = Class.forName("ReflectionTest");  也可以通过实例,获取方法对象...
  • 答案是它是在声明函数,而想要调用不带参数的构造函数来创建对象则需要使用如下形式: Student b; 另外,如果要声明带一个参数的函数,那么它是否会和使用带一个参数的构造函数创建对象时冲突呢?答案是不会...
  • 作为一个iOS程序员初学者,会搞不清楚对象方法和类方法的区别
  •  总结下来有以下4种创建对象方法:使用 new 关键字调...Java 是面向对象的语言,不可避免的,“对象”这个概念是 Java 语言的核心部分,这里来简单讨论一下在 Java 中创建一般对象的方法。总结下来有以下4种创建...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,079,966
精华内容 1,231,986
关键字:

创建对象调用方法