面向对象
三个引用,两个对象的引用指向同一地址的内存图:
-
局部变量和成员变量的区别
局部变量:定义在方法中的变量或方法声明上的变量
成员变量:定义在类中方法外的变量
1.局部变量属于方法,随着方法的调用而产生。随着方法的调用完毕而消失
成员变量属于对象,也叫做实例变量,随着对象的创建而产生,随着对象的回收而消失
2.局部变量,必须赋值才能使用
成员变量:有默认值
3.局部变量存在于栈内存
成员变量存在于堆内存
-
当成员变量和局部变量重名时,变量的访问原则就近原则
现在该方法内部这个局部范围照这个变量,找到就是用,没有找到就去成员范围找,找到就是用,没有找到就报错。
-
可以将多个类,并列的定义在一个.java文件当中。public中呢个加给其中作为入口的类。但是建议一个类,就是一个.java文件。
-
参数传递:当以后看到一个形参要一个类 类型,就传递一个该类的对象
基本类型作为参数传递,属于值传递。形参的改变不影响实参。
引用类型作为参数传递,属于引用传递,传递的是地址值,形参的改变会影响实参。
匿名对象
-
没有名字的对象
-
匿名对象可以直接调用属性和功能
-
1.当只想调用一次时,用匿名对象调用
2.匿名对象可以作为参数传递
3.当以后看到一个方法的形参,要一个类型,就传一个该类对象
权限修饰符
-
public(任何地方都可以访问到)>protected(在同一包下可以调用)>缺省的>private
-
private
我们采用 对象名.成员变量名=值 这种方式给成员变量设置值的方式,他不能排除一些不合理的数据。我们可以采用一种手段来屏蔽掉 对象名.成员变量名=值 这种设置值的方式。
-
private 权限修饰符,可以修饰成员变量,也可以修饰成员方法,被修饰的成员,只能在奔雷中访问,外界无法直接访问。
-
我们提供公共的设置和获取的方法,让外界用过调用方法来给成员变量设置值和获取值。
例:设置名字和年龄到private修饰的变量name和age中,并对年龄进行限制。
-
以后在定义一个类时,会把成员变量私有掉,然后提供公共的set get方法,让外界通过 set get 方法间接的去给成员变量设置值以及获取成员变量的值。
-
-
this
- 当我们调用set方法时,形参的名称和成员变量的名称重名了,发现把成员变量致盲了,我们可以是用this区分局部变量和成员变量。
- this代表该类的一个引用,可以理解为该类的对象,那个对象调用这个方法,那么方法中的this就代表那个对象
- 方法中的this代表那个调用者。
构造方法
创建一个类的对象 使用关键字new 来调用构造方法来完成类的实例化。
例:Student s=new Student();
构造方法的作用:就是用来对类进行实例化。
语法:方法名和类名相同,没有返回值,void也没有
当定义一个类后,这个类中,默认就存在有空参的构造方法。
-
借助有参构造来完成类的实例化
-
一旦我们手动给出了有参构造,那么默认无参构造就没有了,如果还想借助空参构造创建对象,建议手动把空参构造写出来。
-
一键生成set get 语句/空参有参构造
按alt+insert键,选择Generate ,选择 getters and setters ,选择想要的参数 //set get
选择Constructor ,空参构造选择none… 有参选择想要的参数 然后点击ok //空参/有参
-
如果不想要外界创建对象,就在构造方法前加private