对象的创建:
public class 类名{ 1、变量,用来说明对象可以处理什么数据 2、方法,描述对象的功能 …… }
对象创建后,在内存中是如何体现的:
类型名 对象名=new 类型名();
=>创建的语句中包含两个内存变量
=>对象名用来保存地址,类型名()用来在堆内存中开辟对象空间
=>首地址会赋值给变量空间,这样做的目的是,允许在方法中能够通过地址访问对象中的数据,功能
对象与类的关系:
对象就是类的一个具体实例,类就是对象的模板。
面向对象和面向程序的区别:
面向对象:更加注重对象本身,基本上运行和对象调用要在不同类,把数据交给对象,再调用对象的方法来完成对数据的处理
面向过程:注重功能,每当要实现一个功能的时候才会调用方法,一个方法独立地实现一个功能
成员变量和局域变量:
成员变量:
(1)public-一般在类中方法外定义
(2)有默认值,不需要初始值
(3)放在堆内存中
(4)作用域是整个对象
(5)与对象共存亡
局域变量:
(1)在方法内定义
(2)没有默认值,在使用之前需要先赋值
(3)包括方法中定义的变量和形参列表中的变量
(4)放在栈内存中
(5)作用域是所归属的大括号中
(6)随着方法的调用而生,随着方法的运行结束而亡
JavaBean和实体类:
JavaBean:
首先明确的是 JavaBean 是一种 Java 类,而且是一种特殊的、可重用的类。
JavaBean 有特定的写法:
-
必须要有一个无参构造
-
属性必须是private
-
必须有对应的 get/set 方法(私有化的属性必须通过public类型的方法暴露给其它程序,并且方法的命名也必须遵守一定的命名规范。)
javabean其实就是有一定规范的java实体类,跟普通类差不多,不同的是类内部提供了一些公共的方法以便外界对该对象内部属性进行操作,比如set、get操作
public class User{ private String username; private int age; public String getUsername(){ return username; } public String getAge(){ return age; } public void setUsername(String username){ this.username = username; } public void setAge(int age){ this.age = age; } }
以上User实体类就是一个javabean,它有几个特性:
1、属性为私有private,而非public
2、提供对属性的setter、getter方法,即赋值、取值,且必须为公共public类型,方法命名也必须遵循一定的命名规范,即:必须以小写的set前缀开始,后跟属性名,且属性名的第一个字母要改为大写。
3、必须有一个无参构造函数,可以显示的写出,一般默认不用写
4、getAge()方法:称为getter方法或者属性访问器,该方法必须以小写的get前缀开始,后跟属性名,属性名的第一个字母必须大写
5、如果一个属性只有getter方法,则该属性为只读属性,如果一个属性只有setter方法,则该属性为只写属性,如果一个属性既有getter方法,又有setter方法,则该属性为读/写属性。通常来说,在开发JavaBean的时候,其属性都定义为读/写属性。
6、需要注意的是,对于JavaBean属性的命名方式有一个特殊情况,如果属性的类型为boolean,它的命名方式应该使用is/set而不是get/set
this关键字:
意义:是指当前调用方法的对象
功能:为了避免局部变量和成员变量同名的时候产生冲突,使用this可以访问成员变量,否则默认就近原则,使用局部变量
public class Student{ String name; //成员变量 public void show( String msg){ //参数中的变量也是局部变量 int score = 100;//局部变量 //方法中定义的变量叫做局部变量(包括了参数变量) } }
构造器(constructor):
含义:是指一种特殊的方法,可以叫做构造方法
作用:创建对象并且对对象成员变量做初始化操作(方法内的变量是局部变量,在使用之前需要先赋值)
特点:
(1)没有返回值,也不用写void:public student(){}
(2)方法名必须要和类名相同
(3)支持重载,当多个构造器的名字相同的时候,只要形参列表的个数不同,对应类型不同,即为构造器重载,可以有无参的构造器,也可以有有参的构造器
(4)会有个默认的无参构造,但如若已经定义任何一个有参构造器,那就没有默认的无参构造了,需要自己定义