-
2016-03-28 19:09:08
对象方法的引用通过对象名.方法名引用。如有以下方法:
public void work(){}
public void work(int h){}
对象名是work,那么对象方法的引用就是work.work(10);
此外,对象方法引用为最后一层,不允许引用对象方法内的组成部分。方法内部定义的变量属于局部变量。
对象属性的引用通过对象名.属性名引用。如有如下属性:
String name;
int age;
double salary;
对象名work,那么对象属性的引用就是work.name。但是对象属性可能是另一个对象,此时我们需要访问另一个对象下的某一个属性,那么引用就是对象名.属性名.属性名……。如下代码:
Address addr;
class Address{
String address;
}假设addr是work的一个属性,此时我们需要引用address这个属性,那么引用方法就是work.addr.address。
现在我们定义了以下两个类;
class Worker{
String name;
int age;
double salary;
Address addr;
public void work(){}
public void work(int h){}
public Worker(){}
public Worker(String s, int i, double d){
name = s;
age = i;
salary = d;
}
}
class Address{
String address;
int zipCode;
public Address(){}
public Address(String s, int i){
address = s;
zipCode = i;
}
}现在我们需要创建一个Worker对象,对象名为work。那么我们现在如何对addr进行赋值呢?
无论是方法还是函数都是可以带参数的,那么这里就有一个问题——参数类型。我们知道类也是一种类型,因此在传递参数的时候就可以分为两类——传值和传址。8种基本数据类型都是传值,类就是传址。
因此对addr赋值时,可以在构造方法中传址赋值。构造方法可以改写为public Worker(String s, int i, double d,Address A)。但同时需要注意的是,在传递参数的时候,参数必须是已知的,具有明确的存储空间和数值。就是说传递对象地址时,对象必须要被准确地创建。因此在创建work时,要对work.addr赋值,需要先创建一个Address的对象,我们假设对象名是dress。则传递的参数形式应该为public Worker("das",3, 3.4,dress).
也可以直接对属性赋值,即work.addr = dress;
现在我们已经创建了两个对象了:dress,work;现在我们需要访问address属性,这里有两种方法:
1、dress.address
2、work.addr.address
但是我们不能这样引用:work.dress.address或者work.address,这样的引用方法会编译报错。这里dress,work都是对象,我们不能引用对象中的对象,只能引用对象中的属性和方法。
因此我们得到一个对象引用的规则:对象只能直接引用他的直接组成部分——属性和方法。方法内部的组成部分不允许被引用,不能直接引用属性内部的组成部分。对象不允许引用对象。
更多相关内容 -
java类与对象(属性,方法)的使用
2021-02-12 11:55:20方法即对象的行为,为定义在类中的具特定功能的一段独立的小程序,方法也称为函数 方法运行后的返回结果的数据类型, 方法的特点: 定义方法可以将功能代码进行封装。 便于该功能进行复用。 方法只有被调用才会被...概念不多说,这篇笔记从代码入手。(为了直观的讲解,下面代码编写可能会使用到中文)
public class车品牌{privateString 品牌;private int 速度 = 0;public void品牌(String 品牌){this.品牌 = 品牌;
}public void踩油门(){if(速度<100){this.速度 += 20;
}
}public void轻踩刹车(){if(速度>0){
速度-= 5;
}if(this.速度<0){this.速度 = 0;
}
}public void显示速度(){
System.out.println("速度是:"+this.速度);
}
}
定义类的成员变量的示例如下:
就是类的属性。这种变量分为成员变量和局部变量
成员变量:
成员变量定义在类中,在整个类中可以被访问。
成员变量有默认初始化值。
局部变量:
局部变量只定义中局部范围内,如:方法内,代码内
局部变量存在于栈内存中。
注:在方法体外,类体内的声明在变量称为成员变量。
在方法体内部声明的变量称为局部变量。
在这里变量不要被外部引用,所以一般情况下使用private修饰符。
方法即对象的行为,为定义在类中的具特定功能的一段独立的小程序,方法也称为函数
方法运行后的返回结果的数据类型,
方法的特点:
定义方法可以将功能代码进行封装。
便于该功能进行复用。 方法只有被调用才会被执行。
方法的出现提高代码的复用性。
4、调用方法:
同样再写一个测试类的文件
1 packagepkg1;2
3 classTest{4 public static voidmain(String args[]){5 车品牌 小飞车= new车品牌();6
7 小飞车.踩油门();8 小飞车.轻踩刹车();9
10 小飞车.品牌("宝马x5");11 小飞车.显示速度();12 }13 }
首先先创建一个对象
语法:类名 对象名=new 类名();
大多数学习java的都会写,但是理解方面是这样的,new一个类名,就会得到一个对象,而这个对象的类型就是这个类名的类型比如说:Car car=new Car();//就是通过new一个Car类名,得到car这个对象,而这个对象就是Car类型的。
所以先new出一个对象
用对象名.方法名获取参数
运行效果
构造方法
构造方法作用就是对类进行初始化。 如果你没有定议任何构造方法的形式,程式会为你取一个不带任何参数的构造函数,那么你产生类的对像时只能用不带参数的方法,如:class a {}//没有任何构造函数。
构造方法就是与类同名的那个方法,它的作用是可以用来初始化,例子如下:
1 packagepkg5;2
3 public classCar{4 privateString 品牌;5 private int 价格= 200000;6
7 //构造方法
8 publicCar(String 品牌){9 this.品牌 =品牌;10 }11
12 public voidsetCar(){13
14 System.out.println("品牌:"+this.品牌+" "+"价钱:"+this.价格);15 }16 }
测试类:
1 packagepkg5;2
3 public classTest{4 public static voidmain(String[] args){5 Car c1 = new Car("比亚迪-唐"); //作用6 c1.setCar();7
8 }9 }
new一个对象的时候要用到构造函数,
例如Car c = new Car();这时调用的是Hello的无参数构造方法; Car c = new Car("比亚迪-唐");这个是调用Hello有参数构造方法,在JAVA中如果不写构造方法的话,会默认加上一个无参数的构造方法,但是如果已经有了一个有参数的构造方法,那么无参数的构造方法就不会默认被加上.如果Hello类中已经有了一个有参数的构造方法,这时再使用Car c = new Car();来创建对象的时候就会出错,这就是为什么书上要强调写了有参数的构造方法就最好加一个无参数的构造方法。
this关键字
每个实例方法都有一个this的关键字,他引用正在被调用的方法的所属当前对象,在你的方法引用一个实例变量时,编辑器会隐含使用的这个变量。
this关键字主要有三个应用:
(1)this调用本类中的属性,也就是类中的成员变量;
(2)this调用本类中的其他方法;
(3)this调用本类中的其他构造方法,调用时要放在构造方法的首行。
-
js访问对象属性的两种方法
2021-05-30 13:37:26一、使用.的方式调用对象的属性 格式:对象名.属性名(不带双引号) var a = {zz:'33',cc:'77'} a.zz一、使用.的方式调用对象的属性
格式:对象名.属性名(不带双引号)
//定义对象 var a = {name:'33',age:'77'} //调用对象name属性 a.name
二、使用[ ]的方式调用对象的属性
格式:对象名[ ' 属性名 ' ]
//定义对象 var a = {name:'33',age:'77'} //调用对象name属性 a.['name']
如果是访问变量是不需要加引号的,如:
//定义对象 var a = {name:'33',age:'77'} var param = 'name' //调用name属性 a[param]
三、两者的区别
1、中括号当中的属性名可以是数字,而点后面则不可以是数字。
2、当在为一个对象动态的添加属性时,不可以使用点,必须使用[ ]
3、如果属性名称带“-”,不可以使用点,必须使用[ ]
如属性名为data-dict时,使用对象.属性调用,直接报错
但是可以使用[ ]调用
-
vue实例对象中的属性、方法
2020-06-15 15:30:03data对象中的属性是响应式的,直接向vm实例设置属性不是响应式的 data的响应性可以被Object.freeze()打断 data属性的使用: Vue实例的函数中:使用this.prop调用(methods,computed的this自动绑定为vue实例) 标签内:...el
- 是根实例的特有属性,代表根元素
- 提供一个页面上的DOM对象作为Vue实例的挂载目标.可以是选择器或者或DOM元素实例
data
- data对象中的属性是响应式的,直接向vm实例设置属性不是响应式的
- data的响应性可以被Object.freeze()打断
- data属性的使用:
Vue实例的函数中:使用this.prop调用(methods,computed的this自动绑定为vue实例)
标签内:通过表达式{{porp}}访问
标签上:通过绑定调用:[prop]=“prop”
methods
- 一般用于设置事件回调函数
- 在表达式中可以通过调用方法,可以达到和调用computed中属性一样的显示效果
- 与computed不同的是,methods不存在缓存,每次调用都编译执行函数代码
computed
- 计算属性在引用时一定不要加()去调用,直接把它当作普通属性去使用就行
- 当data中的数据发生变化时,就会重新进行计算,计算的结果将保存到一个新的属性中
- 计算属性的结果会被缓存,方便下一次直接使用;只有计算属性方法中的数据没有发生变化,就不会重新计算
- 计算属性方法中必须有一个return值
<div id="app"> firstname:<input type="text" v-model="firstname" /> lastname:<input type="text" v-model="lastname" /> fullname:<input type="text" v-model="FullName" /> </div> <script type="text/javascript"> new Vue({ el: '#app', data: { firstname: '', lastname: '' }, computed: { FullName() { //FullName就是新生成的属性 return this.firstname + '-' + this.lastname } } }) </script>
template
- 一个字符串模板,可以是选择器或包含html内容的字符串
watch
- 主要用于监听vue实例已有属性的变化,对于不存在的属性无法起到监听作用
- watch可以在参数列表拿到变化的前一个对象和变化之后的新对象
- watch可以检测对象深层次属性的变化以及设置回调函数是否立即触发
<div id="app"> firstname:<input type="text" v-model="firstname" /> lastname:<input type="text" v-model="lastname" /> fullname:<input type="text" v-model="FullName" /> </div> <script type="text/javascript"> new Vue({ el: '#app', data: { firstname: '', lastname: '', FullName: '' }, watch: { firstname(newVal, oldVal) { this.FullName = newVal + '-' + this.lastname }, lastname(newVal, oldVal) { this.FullName = this.firstname + '-' + newVal } } }) </script>
vue实例的属性对象
Vue实例对外提供了一些有用的实例属性与方法,用前缀$+属性名/方法名表示,以便于和用户定义属性区分开属性:
vm.$el:根实例的挂载DOM结点 vm.$parent:当前实例的父实例 vm.$children:当前实例的子实例 vm.$root:组件树的根实例,如果没有父实例,vm.$root指向自己 vm.$refs:注册过 ref 特性 的所有 DOM 元素和组件实例 vm.$data:指向实例的data属性 vm.$props:指向当前组件的props对象属性 vm.$watch:指向实例的watch方法 vm.$set:这个方法给实例设置的属性是响应式的.直接设置vm.prop不是响应式的 vm.$mount:这个方法等同于el属性,都是给vue实例挂载DOM结点,底层实现一样 vm.$nextTick:DOM完成更新后,自动执行,调用nextTick中的回调函数
实例:获取DOM元素
<div id="app"> <h1 @click="showMessage" ref="h1">哈哈哈</h1> </div> <script type="text/javascript"> new Vue({ el: '#app', methods: { showMessage() { console.log(this.$refs.h1.innerHTML) } } }) </script>
beforeCreate
触发:在实例创建之前执行
作用:这个阶段主要做的事情是初始化事件和生命周期
范围:不能拿到data数据,不能拿到dom节点created
触发:在实例创建完执行,常用于操作vue
作用: 主要做的事情就是数据观测,可以通过this拿到data数据,此处最早可发Ajax请求,通过修改属性做渲染
范围:可以获取data数据,无法获取挂载的dom节点,在此处修改数据不会触发beforeUpdate和updated钩子函数beforeMount
触发:数据渲染之前触发,此时dom节点已经挂载,但是数据尚未渲染到html模板
作用:结束模板编译,准备数据渲染
范围:此时编译模板已经结束,可以拿到dom节点,可以修改data属性,但数据还没最终渲染到页面,不能拿到html最终渲染的结果mounted
触发:dom节点挂载,且数据已经渲染到html模板上去,就是针对需要操作dom的方法,比如加载jQuery插件时,在这里面加载对应的函数
作用:将数据渲染到DOM节点
范围:可以访问和修改data属性,数据已经渲染到DOM节点,可以操作渲染后的DOM,可以触发beforeUpdate、updated钩子函数new Vue({ el: '#app', data: { name: 'onion' }, created() { console.log(this.name) } })
components
意思为引入组件,组件可以写在别的文件中,也可以写在本文件中,需要赋值给变量
-
对象的属性,方法及序列化
2018-12-31 19:14:18对象的三个属性 每一个对象都有与之相关的原型(prototype)、类(class)和可扩展性(extensible attribute)。下面将会展开讲述这些属性有什么作用,以及如何查询和设置它们。 原型属性 对象的原型属性是... -
js Document 对象属性和方法
2019-06-20 10:08:48document.writeln() 等同于 write() 方法,不同的是在每个表达式之后写一个换行符。 document.scripts 返回页面中所有脚本的集合。 document.title 返回当前文档的标题。 document.URL 返回文档完整的URL document.... -
如何判断一个对象里的属性是否都为空的
2021-04-22 13:20:17------解决方案--------------------引用:怎么判断一个对象里的属性是否都为空的,或者判断该对象是否是一个实体!我明白你的意思,这得根据不同类型来校验://前面省略,直接从类型开始,根据类型来处理//获取Field... -
TypeError Error 1009 无法访问空对象引用的属性或方法
2018-11-14 02:07:02TypeError Error 1009 无法访问空对象引用的属性或方法 -
Java基本要素及Java类的成员:属性与方法
2021-02-26 12:03:34Java类的成员:属性、方法、构造器、代码块、内部类。类和对象的使用(面向对象思想落地的实现):1.创建类,设计类的成员。2.创建类的对象。3.通过“对象.属性”或“对象.方法”调用对象的结构。一... -
类和对象、方法和属性
2018-07-30 17:06:082、类:具有相似属性和方法的对象的集合 是具有相同数据成员和函数成员的一组对象的集合,它为属于该类的全部对象提供了抽象的描述。 3、面向对象程序设计的特点:封装 继承 多态 封装:面向对象技术中的封装... -
HTML页面访问ActiveXObject对象的方法和属性
2013-04-05 17:30:03一个实现自定义ActiveX控件的demo TestActiveX.html页面中通过两种方式(OBJECT对象引用和ActiveXObject对象创建)访问ActiveX控件对象的方法和属性 解决 意外地调用了对象的方法和属性访问 -
ES6对象的新增方法
2021-01-13 18:57:51上面代码使用了对象属性的简洁表示法,直接将两个函数放在大括号中,再使用assign()方法添加到SomeClass.prototype之中。 (3)克隆对象 function clone(origin) { return Object.assign({}, origin); } 上面代码将... -
Flex/Flash/AS3.0:无法访问空对象引用的属性或方法
2018-05-03 20:56:13无法访问空对象引用的属性或方法报错的弹窗提示如图:flash出现“无法访问空对象引用的属性或方法”问题的原因很简单,其实就是没有进行非空判断,根本原因是对hasOwnProperty的使用不了解。使用hasOwnProperty时... -
访问javascript对象的属性和方法的两种方式
2019-08-01 11:32:43对象的引用可以使用点运算符(.)或者中括号运算符([])来访问其属性,需要注意的是,在点运算符之后书写的属性名会被认为是标识符,而中括号运算符内的则被转为字符串值的式子。 两种运算符的选择都没有问题,点... -
面向对象:属性和方法
2018-07-12 19:57:34私有权限面向对象三大特性:封装、继承、多态封装的意义:将属性和方法放到一起做为一个整体,然后通过实例化对象来处理;隐藏内部实现细节,只需要和对象及其属性和方法交互就可以了;对类的属性和方法增加 访问... -
C# 类、对象、属性、方法
2017-03-05 10:05:24今天小编就来聊聊自己对C#中的类、对象、属性和方法的理解。 正文: 一 相关概念 先来说一说类、对象、属性和方法的字面理解。 类:具有相似属性和方法的集合。 对象:客观真实存在的物体或者事物,看得见摸得... -
VS错误 CS0120 对象引用对于非静态的字段、方法或属性
2021-10-12 10:44:57有时候,我们在使用开源程序时,会碰到错误 CS0120 对象引用对于非静态的字段、方法或属性,此类属性一般引用了非静态的方法造成的,解决办法有两种。 1.将引用的方法new一个对象出来。 2.将引用的方法改成static... -
C#报错提醒:“对象引用对于非静态字段、方法或属性是必需的”
2021-07-07 14:18:32C#报错提醒:“对象引用对于非静态字段、方法或属性是必需的” 原因:类中静态的方法、成员函数只能访问静态的数据成员或者静态的方法。 所以当静态函数调用非静态函数时,会提醒报错。 解决方法: 1、把调用的函数... -
JS基础之函数内部对象、属性、方法
2018-01-14 18:09:09在函数内部,有2个特殊的对象:arguments 和 this。 · arguments:类数组... >另一个函数对象的属性,caller,保存着调用当前函数的函数的引用,如果是在全局作用域中调用当前函数,它的值为null · this:引用的 -
非静态的字段,方法或属性要求对象引用如何解决
2020-01-13 18:35:27类里面的方法和变量有两种类型,一种可以直接使用,另一种必须实例化后才能使用。直接使用的必须在变量或方法前面加上Static关键字,后者不需要。 ... -
方法传参,传对象和传对象的属性区别
2017-02-19 20:54:17传递引用数据类型:传递给方法的是一个对象在堆内存中的首地址,变量的类型属于引用数据类型,且属于局部变量存在栈中,在执行完该局部变量所在的方法体之后,该局部变量所在的内存空间回被释放,变动的值可以带... -
Python中实例对象如何进行属性和方法调用原因分析
2018-03-09 17:10:52在正式开始之前,我们先看一段代码: 下面我们来分析这段代码,上图的左边是实际的代码过程,右边为执行后的结果。 Python中一切皆对象。绝对不是一句空话,在Python的解释器里,不仅有自己定义是对象,使我们传统... -
C#报非静态的字段、方法或属性要求对象引用的原因
2020-04-08 09:56:02那么我们怎么去解决这个问题,这里有两种方法,分别如下: 1、将instance也声明为静态的,让instace和GetInstance方法的初始化顺序一致,代码如下: class singleton { private singleton() { } protected static ... -
JavaScript移除对象中不必要的属性
2021-10-24 20:09:22业务开发中,我们经常会遇到:基于后端返回接口数据,前端保存到对象 Object 中,前端开发过程中为了一些场景的便利性,需要在该对象中增加相应的属性,但这些属性对于后端没有意义,保存提交时希望删除掉。... -
对象方法的name属性
2018-01-10 13:50:15在ES6中的规范中,为函数对象添加了一个name属性,用来保存函数的名称。例如: function sayHello(){ console.log("Hello"); } sayHello.name //sayHello; 全局函数 sayHello的名称就是sayHello。对于匿名函数... -
CS0120 对象引用对于非静态的字段、方法或属性XX是必需的
2020-12-08 09:56:45一般这个错误是没有new对象,却直接用静态类.方法的形式调用了方法, 解决: 直接将类实例化个对象 比如报错的代码: System.Diagnostics.EventLog.WriteEntry(“md5编码3:” + pwd); 解决方法: System.... -
Java基础总结(一)对象,类,属性,方法
2017-03-20 11:34:04对象,类,属性,方法的解析。 类创建对象,引用控制对象解析。 面向对象的基本思想 -
非静态的字段、方法或属性要求对象引用
2018-10-07 19:25:55有一个类PC,里面有一个方法cLH,在Main函数中直接调用cLH方法,就会出现上述问题。 解决方法:通过构造实例,再调用即可。 即先创建实例 PC myPc = new PC(); 然后调用: myPc.cLH(); ... -
js自定义对象、属性、方法(转)
2014-09-16 20:53:42在Java语言中,我们可以定义自己的类,并根据这些类创建对象来使用,在Javascript中,我们也可以定义自己的类,例如定义User类、Hashtable类等等。 目前在Javascript中,已经存在一些标准的类,例如Da -
2018/01/08JAVA 基础 / 接口与继承:调用父类/子类的类方法、对象方法,访问父类的类属性、对象属性的方式...
2021-03-09 09:10:50形式②在子类/父类主方法中用父类类型对象/引用.类属性形式访问,如Hero h = null;System.out.println(h.armor);即便是Hero h = new ADHero();形式也能用对象.类属性调用父类的类属性。理由:因为...