-
本篇文章为学习笔记,主要总结类与对象,成员变量,成员方法,构造方法之间的概念及总结。
面向对象和面向过程的区别
- 面向过程具体到每一步,每次都要自己写
- 面向过程是将步骤根据不同的功能进行封装,需要的时候直接调用
面向对象的思想
- 执行者-->指挥者
- 符合思考习惯
- 复杂的事情简单化
类
JAVA语言的基本单位
一组相关的属性和行为的集合
对象
- 类的具体体现
- 可以有多个
变量和成员变量
- 位置不同,变量在方法中,成员变量在类中
- 成员变量可以不初始化,有默认值
成员变量
private String name;
成员方法
public void study(){
SYstem.out.println("好好学习");
}
- ==注意:成员方法用static后只能访问静态成员==
创建对象格式
类名 对象名 = new 类名();
实例
Student s = new Student();
出现的小BUG
问题:没有报错但是有红叉
解决办法:全选-->剪切-->粘贴
使用Student类的对象给它的成员变量赋值和调用成员方法
public static void main(String[] args) {
Student s = new Student();
s.name = "张三";
s.age = 18;
System.out.println(s.name+s.age+"了");
s.eat();
s.study();
}
//打印输出
张三18了
成员变量和局部变量的区别
-
在类中的位置不同
- 成员变量:在类中,方法外
- 局部变量:在方法内
-
在内存中的位置不同
- 成员变量:在堆内存
- 局部变量:在栈内存
-
生命周期不同
- 成员变量:随着对象的创建而创建,随着对象的消失而消失
- 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
-
初始化值不同
- 成员变量:有默认值
- 局部变量:没有默认值,必须初始化
private关键字
- 私有的
- 被private修饰的成员只能在本类中被访问
- 被private修饰的成员变量会提供setXxx()方法和getXxx()方法用于初始化和调用
- 优点:保证数据的安全性
使用实例
Student类
public class Student {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
测试类
public class Test {
public static void main(String[] args) {
Student s = new Student();
s.setName("张三");
s.setAge(18);
System.out.println(s.getName() + "今年" + s.getAge() + "岁了!");
}
}
打印输出结果:
张三今年18岁了
封装
面向对象三大特征之一
原则:不需要对外提供的内容都隐藏起来
-
好处:
- 提高代码复用性
- 提高数据安全性
- 方法的复用
this关键字
- 代表所在类的对象引用
public class Student {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
- this.XXX 表示类中的成员变量xxx
构造方法
作用:
可以为成员变量赋值
给对象的数据进行初始化
- 无参的构造方法
public Student(){ }
- 有参的构造方法
public Student(String name){
this.name = name;
}
当我们没有写构造方法的时候,系统会提供一个无参的构造方法
当我们写一个有残的构造方法后,如果还想使用无参的构造方法,那么必须自己写一个无参的构造方法。
构造方法也是可以重载的,重载条件和普通方法相同
-
setter and getter 方法快捷键:
Sourse-->Generate setter and getter
构造方法快捷键:
Sourse-->Generate Constructor using Fields...
方法重载
方法名相同,参数列表不同,与访问修饰符和返回值无关