面向对象基础
1.类和对象:
1.1什么是对象
客观存在的事物皆为对象。
1.2什么是面向对象
关注一个具体的事物或者信息
1.3什么是类
类是对生活中一类具有相同属性和行为的事物的抽象
特点:
类是对象的数据类型
类是具有相同属性和行为的一组对象的集合。
1.4什么是对象的属性
对象所具有的特征,每个对象都有自己特定的属性值
1.5什么是对象的行为
对象所能够执行的操作。
1.6类和对象的关系
类:类是对生活中一类具有相同属性和行为的事物的抽象
对象:对象是能够看的见摸得着的真实存在的事物。
1.7类的定义
类:
类是java程序的基本组成单位。由属性和行为组成。
属性:在类中通过成员变量来体现(类中方法外的变量)
行为:在类中通过成员方法来体现
类的定义:
public class 类名{
//成员变量
数据类型 变量名1;
数据类型 变量名1;
....
//成员方法
方法1;
方法1;
...
}
1.8对象的使用:
创建对象:
类名 对象名 = new 类名();
Student s = new Student();
使用对象:
对象名.变量名;
s.age;
对象名.方法名();
s.xuexi();
2.对象内存图:
2.1单个对象:![](https://i-blog.csdnimg.cn/blog_migrate/70158bdb21681da62f46595b60aeac19.jpeg)
2.2多个对象:![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e13e8530b17b9a9fbf4cae2fcb178015.jpeg)
2.3多个对象指向相同:![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/792fb164b1be3d1a2c87e71112062089.jpeg)
3.成员变量和局部变量:
3.1什么是成员变量和局部变量:
成员变量:类中方法以外的变量
局部变量:类中的方法中的变量
3.2成员变量和局部变量的区别:
类中位置不同: 成员 在类中方法外, 局部 在方法内或方法声明上
内存中位置不同: 成员 在堆内存 局部 在栈内存
生命周期不同: 成员 随着对象消失而消失 局部 随着方法调用完毕而消失
初始值不同: 成员 有默认的初始值 局部 先定义,赋值才能使用。
4.封装:
4.1private关键字:
是一个权限修饰符
可以修饰成员(成员变量和成员方法)
保护成员不被别别的类使用,private修饰的成员只能在本类中访问。
被private修饰的成员变量 如果需要被其他类使用,可以提供方法。
get变量名() 用于获取成员变量的值 用public修饰
set变量名(参数) 用于设置成员变量的值 用public修饰
4.2private关键字的使用:
一个标准类的编写:
把成员变量用private修饰
提供对应的getXxx()和setXxx()方法
4.3this关键字:
this修饰的变量用于指代当前对象的成员变量
一般在局部变量和成员变量同名时使用
this 代表所在类的对象引用:
哪个对象调用,this就代表哪个对象。
4.4this的内存原理:![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a206046689c2d8225c3a2f61aa90e7f5.jpeg)
4.5封装概述:
封装是面向对象三大特征之一(封装,继承,多态)
是面向对象编程语言对客观世界的模拟/
4.6封装原则:
将类的某些信息隐藏在类的内部,不允许外部程序直接访问。
4.7封装的好处:
通过方法来控制成员变量的操作,提高了代码的安全性。
把代码用方法进行封装,提高了代码的复用性。
5.构造方法:
5.1构造方法概述:
构造方法是一种特殊的方法 用来创建对象。
格式:
public class 类名{
修饰符 类名(参数){
}
}
示例:
public class Student(){
public Student(){
//构造方法内书写的内容
}
}
功能:
主要用来完成对象数据的初始化。
5.2构造方法的注意事项:
构造方法的创建:
如果没有定义构造方法,系统给出一个默认的无参构造方法
如果定义了构造方法,系统不再提供默认的构造方法
构造方法的重载
如果定义了构造方法,还想使用无参的构造方法,必须再写一个无参构造方法。
推荐方式:
无论是否使用,都手工书写无参的构造方法。
5.3标准类的制作
1.成员变量
用private修饰
2.构造方法
提供一个无参构造方法
提供一个带多参数的构造方法
3.成员方法
提供每一个成员变量对应的setXxx()/getXxx()
提供一个显示对象信息的show()
4.创建对象并且为其成员变量赋值(两种方式)
无参构造方法创建对象 用setXxx()赋值
使用带参构造方法直接创建带有属性值的对象
标准类 学生
public class StudentDemo {
public static void main(String[] args) {
Student s1 = new Student();
s1.setName("张三");
s1.setAge(20);
s1.show();
Student s2 = new Student("李四",30);
s2.show();
}
}
public class Student {
private int age;
private String name;
Student(){}
Student(String name,int age){
this.name = name;
this.age = age;
}
public void setAge(int age){
this.age = age;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public void show(){
System.out.println(name+":"+age);
}
}