5 对象的使用
对象有两种使用情况
情况一:
-
对象本身,是一个引用类型的数据
-
所以他也可以像其他的所有数据一样,进行操作 如:存储,打印等。
int i = 10 ;
print(10) ;
//最终存储在变量中的是对象的地址。
Person person = new Person() ;
print( new Person() ) ;
print( person ) ;
情况二:
-
对象包含属性和方法
-
所以使用对象,其实就是使用对象中的属性和方法 。 类似于数组
class A{
int i = 10 ;
public void t1(){}
}
main(){
A a = new A();
a.i = 20 ; //使用对象的属性
print( a.i ) ;
a.t1() ; //使用对象的方法
new A().i = 20 ; //可以创建对象的同时,就使用其属性或方法
}
6 面向对象的编程过程
OOA : 面向对象的分析
OOD : 面向对象的设计
OOP : 面向对象的编程
7 JVM中对象的创建和使用过程
8 面向对象的一些应用特点
对象成员
-
对象 包含属性和方法。
-
属性和方法都是对象的成员
-
各自称为:成员属性 (成员变量,对象属性), 成员方法(对象方法)
-
在成员方法中,可以使用自己的成员变量
成员变量与局部变量
-
成员变量就是类对象中的变量,对于类对象中的所有方法是共享的。
-
局部变量一般就是方法中的变量 。 (花括号中的变量)
9 构造方法
-
类对象中可以包含属性和方法
-
方法包含一个特殊的情况,就是构造方法
-
构造方法又称为构造器
-
构造方法特点
-
构造方法名称必须与类名相同
-
构造方法没有返回类型
-
目前,构造方法只能在new创建对象时被调用
-
不能修饰符 static , final ,abstract
-
-
其余与普通方法相同
-
异常声明
-
访问权限
-
参数列表
-
方法重载
-
那么构造方法的作用是什么呢?
-
主要是用于在创建对象的同时,为对象的属性初始化赋值
-
或者创建对象的同时,执行一些初始化操作
注意:
我们在为属性初始化时,也可以在定义属性的同时使用=号初始化
是不是就意味着构造方法没有用了呢? 依然有用,有两点
-
初始化的数据,有可能每个对象不同,可以利用有参的构造方法,为属性传递不同的值
class User{ String name ; public User(String pname){ name = pname ; } } new User("zs") ; new User("ls") ;
-
在编译时,即使我们没有写构造方法,也会帮我们自动生成一个无参构造方法
同时,将属性定义时的=号赋值操作,也移动到构造方法中。
如果我们写了构造方法, 就不会再帮我们生成无参构造方法了。建议所有的类都提供无参构造方法
class User{ String name = "zs"; String sex = "男" ; } //编译后变成了 class User{ String name ; String sex ; public User(){ name = "zs" ; sex = "男" ; } }
注意:
构造方法也可以像普通方法一样,重载
class User{
public User(){}
public User(String name){}
public User(String name , String sex){}
}
new User() ;
new User("zs");
new User("zs","男") ;
10 对象创建的过程
引入构造方法后,对象创建的过程是什么样的
new User() ;
-
jvm会根据new关键, 开辟对象的存储空间, 也就是创建了一个对象
只不过空间中要放什么内容,还不知道。需要类模板
-
根据构造方法,找到类模板 。因为构造方法的名字与类名相同
一旦找到类模板,就会按照类模板中声明的信息 产生变量和方法
同时这个属性变量会有默认值
-
接下来会调用构造方法,为属性变量初始化赋值
-
注意:上述的3步都是创建对象的过程。
那么今天的内容就到这里啦,如果存在哪些疑问或问题欢迎大家指出,我们下期再见~