面向对象
面向过程:当需要实现一个功能的时候,每一个具体的步骤都要亲力亲为
面向对象:当需要实现一个共能的时候,不关心具体步骤,找一个具有该功能的人,来帮我做事
找一个jdk给我们提供好的Arrays类, 其中有一个toString方法,直接就能把数组变成想要的格式的字符串。
1.1 类
属性:是什么 身高,年龄,姓名。。。
行为:能做什么 吃饭,睡觉,学习。。
成员变量(属性)是直接定义在类当中,方法外
成员方法(行为) 不用static关键字
public void eat(){}
public void sleep(){}
如果成员变量没有进行赋值,会有一个默认值,跟数组一样
1.2 对象的创建及其使用
如何创造对象:
-
导包 指出需要使用的类,在什么位置;
import 包名称.类名称;
对于和当前类属于同一个包的情况, 可以省略导包语句不写。 -
创建
类名称 对象名 = new 类名称();
Student stu = new Student(); -
使用
分为两种情况:
如何使用成员变量;对象名.成员变量名
使用成员方法; 对象名.成员方法名(参数)
也就是,想用谁,就用对象名点儿谁。
System.out.println(stu.name);
将右侧字符串赋值交给stu对象当中的name成员变量
stu.name = “xxx”;
-
使用对象的成员方法,格式:
-
练习 定义一个手机类
分析: 属性:品牌 价格 颜色
行为: 打电话 发短信 拍照
对应到类当中
成员变量(属性) String brand
double price
String color
成员方法(行为)public void call(Srting who){}
public void sendMessage(){}
public class Phone{
String brand;
double price;
String color;
//方法
public void call(String who){
System.out.println("给" + who +"打电话");
}
public void sendMessage(){
System.out.println("群发短信");
}
}
//创建对象
import xxxx.xx
public class Demo1Phone{
public static void main (String[]args){
Phone one = new Phone();
System.out.println(one.brand);
System.out.println(one.price);
System.out.println(one.color);
one.brand = "苹果";
one.price = 8388.6;
one.color = "黑色";
System.out.println(one.brand);
System.out.println(one.price);
System.out.println(one.color);
one.call("乔布斯");
one.sendMessage();
}
}
当一个对象作为参数,传递到方法当中时,实际上传递进去的是对象的***地址值***
当使用一个对象类型作为方法的返回值时,返回值就是对象的***地址值***
1.3 成员变量和局部变量的区别
-
定义的位置不一样:
局部变量在方法的内部
成员变量在方法的外部,直接写在类当中 -
作用范围不一样
局部变量只有方法当中才可以使用,出了方法就不能再用了
成员变量整个类全都可以通用 -
默认值不一样
局部变量没有默认值,如果要想使用,必须手动进行赋值
成员变量:如果没有赋值,会有默认值,规则和数组一样
封装性
面向对象三大特征:封装 继承 多态
- 方法就是一种封装
- 关键字private也是一种封装
封装就是将一些细节信息隐藏起来,对于外界不可见
一旦使用private修饰 本类当中当中可以随意访问,超出就不能直接访问
简介访问private成员变量,就是定义一对儿getter/setter 方法
必须叫setxxx 或者getxxx
对于set来说不能有返回值, 参数类型和成员变量对应
对于get来说 不能有参数 返回值类型和成员变量对应
private int age;
public void setAge(int num){ //有参数 无返回值
age = num;
}
public int getAge(){ // 没参数 有返回值
return age;
}
练习:通过关键字private定义学生类
***this 关键字的作用
当方法的局部变量和类的成员变量重名的时候,根据就近原则,优先使用局部变量。如果需要访问本类当中的成员变量,需要使用格式。
this.成员变量名
通过谁调用的方法谁就是 this
构造方法
专门用来创建对象的方法,当我们通过关键字new创建对象是,其实就是在调用构造方法
格式:
public 类名称 (参数类型 参数名称){
方法体
}
注意事项
成员变量 无参数的构造方法 全参数的构造方法 getter setter
- 构造方法的名称必须和所在的类名称完全一样,就连大小写也要一样
- 构造方法不要写返回值类型,不要写void
- 构造方法不能return一个具体的返回值
- 如果没有编写构造方法,编译器会默认赠送一个构造方法,没有参数,方法体什么事情都不做。
- 一旦编写了至少一个构造方法,编辑器将不再赠送
- 构造方法也是可以重载的 方法名称相同 参数列表不同
例如
public class Student{
public Student(){
System,out,println(“构造方法实现了”)
}
}
标准的类
一个标准的类通常都需要下面四个组成部分
- 所有的成员变量都要使用private关键字修饰
- 为每一个成员变量编写一个getter setter方法
- 编写一个无参数的构造方法
- 编写一个全参数的构造方法
这样标准的类也叫做Java Bean