对象
类
软件开发过程:面向过程: 站在过程的角度思考问题,也就是功能的执行过程,也就是先做什么后做什么,过程中的函数也就是对象中的方法,强调的是函数,每个函数负责完成某一个功能,接收输入数据,函数加工处理,输出结果数据.在完成复杂功能的时候需要去不断去调用函数,就会造成适应性和可拓展性都很差,维护性也很低. 强调的是我该怎么做
面向对象: 多个模块,比如微信最重要的模块是聊天,其次会去增加支付,小视频等模块.俗称热插拔.每个模块都能够实现对应的功能,可以随时增加和删除. 强调的是该让谁来做.这里的谁就是对象.面向对象当中也包含面向过程,面向对象更加的符合常规的思维方式,稳定性好,可重用性强,更适合开发大型软件产品,维护性也好.
三大特征:封装encapsulation,继承inheritance,多态polymorphism.
成员变量:直接定义在类中,方法的外面 成员变量有默认值,也就是初始值,整形初始值为0,浮点型为0.0,char类型为空字符,布尔类型为false,引用数据类型为null
public class Demo02{
//成员变量
String name;
int age;
public void test(){
//可以访问成员变量.
System.out.println(age);
System.out.println(name);
}
public static void main(String[] args) {
Demo02 t = new Demo02();
t.test();
}
}
局部变量:存在于三个地方:方法内 方法中的形参 代码块中{}中,能形成作用域,一个{}也就是一个作用域,作用域是可以嵌套的,1.内层作用域可以访问外层作用域定义的变量,但是外层不可以访问内层的.2.同一作用域不能够定义两个同名变量3.局部变量没有默认值,所以必须先赋值
public static void main(String[] args) {
int count = 10;//方法中的局部变量
{
int count1 = 20;//代码块中的局部变量
System.out.println(count);
System.out.println(count1);
}
System.out.println(count);
//System.out.println(count1);
}
从以往的事物总结物体的特征,行为等(也就是归类)用于认识新的事物.
类:是拥有相同特征(状态)和行为(功能)的多个事物的抽象描述
类是用来描述群体的,是对一个群体的抽象的描述
一般用成员变量来表示状态,用成员方法来表示行为
定义类的语法格式
public class 类名{//大写的驼峰命名法
//可以编写n个成员变量,描述特征(实例变量/成员变量/类的字段)
//[修饰符] 数据类型 变量名;
String id;
String name;
int age;
//编写n个方法,描述行为(也叫作成员方法/实例方法)
public void eat(String food){
System.out.println(name + "在吃" + food);
}
}
对象
对象是类的一个具体实例,用于描述一个具体的个体
对象一定属于某一个类,具有该类的特征和行为
对象是独立的,唯一的个体
在程序中类可以作为一个新型的数据类型.可以使用类来声明对象
对象的本质
创建对象:
//创建一个Person类
//数据类型 变量名 = 值
//1.声明了一个person类型的变量,属于引用数据类型
Person p1 = null;
//2.申请空间
p1 = new Person();
//合二为一的写法
//创建了一个对象p2/实例化了一个person类型的实例p2
Person p2 = new Person();
//对象和对象之间是相互独立的个体,属于同一类型,相互之间没有关系
//通过对象或者实例来访问Person类中定义的成员
//设置成员变量的值
p1.id = "12345";
//读取成员变量的值
System.out.println(p1.id);
//结论:1.对象特别适合存储复杂的数据,对象时数据的载体
//2.开发者需要存储什么类型的数据,就new什么类型的对象
//3.必须先创建类,然后才能创建对象,对象才能持有数据
//4.对象持有的数据在程序运行过程中是可以改变的,对象持有的数据可以被方法加工和运算
实例变量:通过实例调用的变量
实例方法:通过实例调用的方法
构造器/构造方法
作用是用来构造对象和给对象做初始化操作;
普通方法语法:
[修饰符] 返回值 方法名(参数列表){}
构造方法语法
[修饰符] 类名(参数列表){}
1.无参构造方法
如果一个类中没有显式的定义构造方法,jvm会默认分配一个无参构造,类似于
public Person(){
//可以直接给默认值.叫做业务上的默认值
}
如果开发者显式定义了无参构造器,jvm不再分配无参构造器
2.有参构造方法
如果想在构造对象时传入自定的参数,可以考虑使用有参构造方法
如果开发者在一个类中定义了一个有参构造器,jvm不会再自动分配无参构造器
注意:在实际开发过程中,如果一个类定义或者显式定义了有参构造,一定要习惯性的把无参构造器写上
public Person(String aName,int aAge){
name = aName;
age = aAge;
}
封装
隐藏信息,尽可能隐藏对象的数据和功能的实现细节
保证数据的安全性,防止调用者随意修改数据
访问修饰符:决定了有没有权限访问某个资源
private:表示当前类私有,其他的类不能够访问
//封装步骤
//1.字段私有化
private String name;
private int age;
//2.提供统一的设置器和访问器以供外界方法使用
//设置器(set加字段名首字母大写)
public void setAge(int aAge){
//3.业务校验
if (aAge < 0){
System.out.println("您输入的年龄不合法");
age = 18;
} else {
age = aAge;
}
}
//访问器(get加字段名首字母大写)
public int getAge(){
return age;
}
public void showInfo(){
System.out.println(name);
System.out.println(age);
}
javaBean规范
是一个特殊类
类必须是public修饰的
必须有公共的无参构造器,即使手动提供了有参构造器,也得手动提供无参构造器
字段使用private修饰私有化,每个字段必须提供一对setget方法