一、面向对象编程
1.对象:一种特殊的数据结构(将现实的事物以编程的思想创建)
2.创建对象:利用 class 来封装一个类,类为模板来创建对象
例:创建一个学生类
public class Student {
// 创建变量来表示对象的属性
String name;
double chinese;
double math;
// 创建方法来表示对象的行为
public void printResult()
{
System.out.println(name+"的语文成绩是"+chinese);
System.out.println(name+"的数学成绩是"+math);
}
}
例:创建对应的对象
public class Test {
public static void main(String[] args) {
Student s1 = new Student();
s1.name = "cxk";
s1.chinese = 98.5;
s1.math = 102.5;
s1.printResult();
}
}
二、对象在程序中的执行原理
1.在程序执行前,将 Test 类和 Student 类都存放在方法区
2.main 方法开始在栈内存运行
3.创建对象时,在堆内存中,对应类开辟一片空间(初始为默认值),同时存储类的地址
4.main 方法以一个变量(s1)来接收在堆内存中开辟空间的地址
5.main 方法可以在栈内存中,通过地址对堆内中的值进行修改
三、this 指针
this 指针:在类的成员方法中使用,用来接收对象本体
作用:区分类中定义的变量名
四、构造器
作用:随对象的创建而调用,通常用于给对象初始化(为对象内的成员变量赋值)
例:在类中创建构造器(构造器可以重载,但不能重复)
public class Student {
public Student()
{
name = "cxk";
chinese = 0;
math = 99;
}
public Student(String name,double chinese,double math)
{
this.name = name;
this.chinese = chinese;
this.math = math;
}
String name;
double chinese;
double math;
public void printResult()
{
System.out.println(name+"的语文成绩是"+chinese);
System.out.println(name+"的数学成绩是"+math);
}
}
例:在通过输入不同的变量来调用不同的构造器
public class Test {
public static void main(String[] args) {
Student s1 = new Student();
s1.name = "cxk";
s1.chinese = 98.5;
s1.math = 0;
s1.printResult();
Student s2 = new Student("wyb",100,100);
s2.printResult();
}
}
注意:1)当没有在类中创建构造器时,程序会自动在类中创建一个无参构造器
2)当创建了一个有参构造器后,程序就不会自动创建无参构造器了(建议自己创建一个无参构造器)
五、封装
封装:用类设计对象处理某一个事物的数据时, 应该把要处理的数据,以及处理这些数据的方法,设计到一个对象中去。
封装的设计规范:合理隐藏,合理暴露
public class Student {
// 将成员变量设为私有
private double score;
// 将成员方法设为公有,通过公有方法来修改和获取私有变量
public void setScore(double score)
{
if(score >= 0 && score <= 100)
{
this.score = score;
}
else
{
System.out.println("数据非法~");
}
}
public double getScore()
{
return score;
}
public void printPass()
{
System.out.println(score >= 60 ? "成绩及格" : "成绩不及格");
}
}
六、实体类(JavaBean)
实体类:一种有一定特殊结构的类
1.这个类中的成员变量都要私有,并且要对外提供相应的getXxx,setXxx方法
2.类中必须要有一个公共的无参构造器
应用场景:软件开发,实现数据和业务处理相分离
补充:IDEA快捷键
1)Alt+Shift+选中:可以跳行多选
2)Shift+选中:可以同时选择多个选项
3)右键的菜单中的Generate选项,可以快捷创建一些结构,如构造器,相应变量的 getXxx,setXxx方法