目录
面向对象编程:拿东西过来做对应的事情。
面向对象的重点学习:
1、学习获取已有对象并使用
2、学习如何自己设计对象并使用——>面向对象的语法
面向对象内容:设计对象并使用、封装、this关键字、构造方法、标准JavaBean、对象内存图、补充知识:成员变量、局部变量的区别
类(JavaBean类)和对象
类:是对象共同特征的描述
对象:是正式存在的具体东西(new的才是对象)
在JAVA中,必须先设计类,才能获得对象
一、如何定义类
public class 类名{
1、成员变量(代表属性,一般是名词)
2、成员方法(代表行为,一般是动词)
3、构造器
4、代码快
5、内部类
}
二、类中成员方法的格式:
public void 方法名字(){
......
}
定义一个手机类:
public class Phone{
//属性
String brand;
double price;
//行为
public void call(){
System.out.println("手机在打电话");
}
}
三、如何使用对象
1、创建类的对象(例:创建一个手机的对象)
格式:
类名 对象名 = new 类名;
Phone p = new Phone;
2、访问属性: 对象名.成员变量
3、访问行为: 对象名.方法名(...)
//创建手机对象
Phone p = new Phone();
//给这个对象赋值
p.brand = "OPPO";
p.price = "3999.99";
//获取手机对象中的值
System.out.println(p.brand);
System.out.println(p.price);
//调用手机中的方法
p.call();
下面是一个定义JaavaBean类的实际例子 :
public class Activity {
//成员变量
private String id;
private String schoolname;
private String state ;
private String name;
private String headname;
private String headnumber;
private String url;
private String date;
private String time;
//空参构造
public Activity(){}
//有参构造
public Activity(String id, String schoolname, String state, String name, String headname, String headnumber, String url, String date, String time) {
this.id = id;
this.schoolname=schoolname;
this.state = state;
this.name = name;
this.headname = headname;
this.headnumber = headnumber;
this.date = date;
this.time = time;
}
//GET和set方法
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getHeadname() {
return headname;
}
public void setHeadname(String headname) {
this.headname = headname;
}
public String getHeadnumber() {
return headnumber;
}
public void setHeadnumber(String headnumber) {
this.headnumber = headnumber;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getSchoolname() {
return schoolname;
}
public void setSchoolname(String schoolname) {
this.schoolname = schoolname;
}
}
四、定义类的补充注意事项
1、用来描述一类事物的类,专业叫做:JavaBean类,在JavaBean类中,是不写main方法的。
2、编写main方法的类,叫做测试类。我们可以坐在测试类中创建JavaBean类的对象并进行赋值调用。
3、类名首字母建议大写,需要见名之意,驼峰模式(大驼峰、小驼峰命名法)
4、应该JAVA文件中可以定义多个类,但只能一个类是public修饰,而且public修饰的类名必须成为代码文件名(建议在JAVA开发中还是一个文件定义一个class类)
5、成员变量的完整定义格式是: 修饰符 数据类型 变量名称 = 初始化值;一般无需指定初始化值,存在默认值。
面向对象三大特征:封装、继承、多态
封装
一、什么是封装
告诉我们,如何正确设计对象的属性和方法;
原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为;
二、封装思想的好处
让编程变得很简单,有什么事,找对象,调方法就行。
降低学习成本
三、private关键字
是一个权限修饰符,可修饰成员变量和成员方法,被private修饰的成员只能在本类中才能访问,其他类就不能直接访问了,保证数据安全性
四、set和get方法
所以要创建set和get方法,set方法用于给成员变量赋值,get方法用于获取成员变量的值,方法用public修饰。在set方法里可以直接对其他类使用成员变量时赋值范围作出限制
(这里以黑马教程中的一段代码为例做解析)
五、就近原则和this关键字
1、成员变量和局部变量,在方法外面的变量就是成员变量,在方法里面的就是局部变量。(后面会具体讲)
2、就近原则就是当有局部变量和成员变量名称相同时,输出这个变量名时系统会优先使用离得近的那个变量值
3、this关键字,可以区别成员变量和局部变量。但如果输出的变量名使用的是this.变量名,那么代表的是要输出成员变量的值,不再就近。
六、构造方法
也叫作构造器、构造函数,有空参构造和带参构造
作用:在创建对象的时候给成员变量进行赋值
特点:
1、方法名与类名相同,大小写也要一致
2、没有返回值类型,连void都没有
3、没有具体的返回值(不能有return带回结果数据)
4、不能手动调用构造方法,创建对象的时候有虚拟机调用,每创建一次,就会调用一次构造方法
无参构造方法:初始化对象时,成员变量的数据均采用默认值
有参构造方法:初始化对象时,同时为对象进行赋值
七、标准JavaBean
1、类名见名之意,驼峰命名
2、成员变量使用private修饰
3、提供至少两个构造方法:无参构造、带全部参数的构造方法
4、成员方法/行为:提供每一个成员变量对应的set/get方法,如果还有其他行为也需要写上
八、基本数据类型和引用数据类型
从理论上
基本数据类型(4类8种):
整数类型、浮点数类型、布尔类型、字符类型
引用数据类型:
除了基本数据类型的其他所有类型
从内存上
基本数据类型:
数据值是存储在自己的空间中
特点:赋值给其他变量,也是赋的真实的值
引用数据类型:
数据值是存储在其他空间中,自己空间中存储的是地址值。
特点:赋值给其他变量,赋的地址值
九、成员变量和局部变量
区别 | 成员变量 | 局部变量 |
---|---|---|
类中位置不同 | 类中、方法外 | 方法内,方法申明上 |
初始化位置不同 | 有默认初始化值 | 没有,使用前要完成赋值 |
内存位置不同 | 堆内存 | 栈内存 |
生命周期不同 | 随对象的创建存在,随对象消失二消失 | 随方法调用存在,随方法运行结束消失 |
作用域 | 整个类中有效 | 此局部变量的方法中有效 |