编程思想
面向过程
只考虑事物发展的的顺序
面向对象
1、先考虑事物中有哪些对象
2、再考虑对象与对象之间的关系
什么是对象
生活中的对象:真实存在的事事物
代码中的对象:通过代码描述一个真实存在对的事物
静态:属性(或成员变量)
动态:方法(函数)
什么是类
多个对象抽取其共同点形成概念,称为“类"
属性
方法
对象与类的关系
生活中:
先有对象,再有类
代码中:
先有类,再有对象
对象是类的实例,类是多个对象抽取共同点形成的概念
Java类
如何创建类
语法:
class 类名{
}
注意:
1、一个类class前有public,这种类称为”公共类“
2、公共类的类名必须与文件名一致
3、一个文件中可以定义多个类
4、一个文件中只能有一个公共类
5、一个文件中类名不能重复
建议:
1、一个文件中只能写一个类
2、类名的命名规则
2.1、大驼峰,见名只意
2.2、可以使用大写字母,小写字母,数字,“_”,"$"
2.3、数字不能开头
类的组成
属性(成员变量):
作用:描述该类对象静态的事物
如:人的性别、姓名、年龄等
在那定义属性?
类中,方法以外,定义的变量称为属性
注意:一个类中属性名不能重复
如何定义属性?
1、在类中,方法以外
2、使用定义变量的方法定义属性
语法:数据类型 属性名;
方法(函数):
作用:描述该类对象动态的特征
如:人的吃饭、睡觉、打游戏等
在那定义方法?
类中,方法以外
如何定义方法?
public 返回值类型 方法名(形参列表){
方法体
return 返回值;
}
构造函数(构造方法):
作用:创建该类的对象
注意:类中可以不定义构造函数,如果一个类中没有构造函数,系统会帮我们给该类生成一个无参构造函数
语法:
public 类名(形参列表){
方法体
}
注意:没有返回值的特殊方法
练习:
创建一个类为dog
该类的属性有:姓名、性别、毛色、年龄
方法有:叫,在该方法中输出“汪汪汪!”
提供一个有参构造,一个无参构造
class dog{
//属性:姓名、性别、毛色、年龄
String name;
String sex;
String color;
int age;
//定义构造函数(无参)
public dog() {
}
//定义构造函数(有参)
public dog(String name,String sex,String color,int age) {
}
//定义“叫”方法
public void call() {
System.out.println("汪汪汪!");
}
}
重载
要求:
1、同一个类中
2、方法名一致
3、形参列表不同
注意:一个类中如果有多个构造函数,那么这多个构造函数的关系一定是重载
局部变量与成员变量
局部变量:
声明的位置:方法中或形参中
使用范围:在A方法中声明,只能在方法A中使用
生命周期:变量的声明开始,方法调用结束
成员变量:
声明的位置:类中方法外
使用范围:在A类中声明,可以在A类中的任何一个方法中使用
生命周期:随对象的创建而生成,随对象的消亡而消亡
this关键字
1、在方法中,当成员变量与局部变量名称一致时,用于区分成员变量还是局部变量
2、在方法中调用当前类的其他成员属性或方法
3、在构造函数中使用this
可以调用成员变量或成员方法
可以区分成员变量与局部变量
可以调用当前类中别的构造函数
语法:this(实参列表)
注意:只能在构造函数的第一行使用
含义:谁调用this所在的方法,this就代表谁
Java对象
如何创建一个对象
语法:
数据类型 对象名 = new 类名(实参列表)
含义:
使用new关键字调用构造
注意:
该对象的类名就是该对象的数据类型
一个类可以创建多个对象
对象创建过程
1、在堆内存中开辟一片空间
2、加载对象的属性,并给属性赋初值
3、执行构造函数中的代码
4、将开辟的内存地址赋值给变量
基本数据类型传递的是值本身,引用数据类型传递的是地址
对象的内存分配
参考文章:(https://www.cnblogs.com/jianwei-dai/p/15402683.html)
对象调用属性,调用方法
调用属性:
对象.属性名 获取属性值
对象.属性名 = 值; 设置属性值
调用方法
对象.方法名(实参列表);
匿名对象
没有变量名的对象,称为匿名对象
使用场景:
当对象只使用一次时,可以不用给对象起对象名,直接创建并使用
anwei-dai/p/15402683.html)
对象调用属性,调用方法
调用属性:
对象.属性名 获取属性值
对象.属性名 = 值; 设置属性值
调用方法
对象.方法名(实参列表);
匿名对象
没有变量名的对象,称为匿名对象
使用场景:
当对象只使用一次时,可以不用给对象起对象名,直接创建并使用