Java面向对象 封装!
面向对象(封装)
面向对象思想:
- 面向对象是基于面向过程的编程思想。
- 面向过程:强调每一个功能的步骤
- 面向对象:强调的是对象,然后用对象去调用功能
- 特点
- A:符合我们思考习惯的思想
- B:可以将复杂的事情简单化
- C:执行者—-指挥者
类和对象
A:属性 —- 就是事物的描述信息
B:行为 —- 事物能够做什么
类:一组相关属性和行为的集合
对象: 就是该事物的具体体现
- 成员变量
- 位置: 类中,方法外
- 初始化值:不需要
- 成员方法
- 去掉static 关键字
Phone
package myTest;
/**
* Created by JackFeng on 2020/3/2.
*/
public class Phone {
String barnd;
int price;
String color;
public void call(String name) {
System.out.println("给" + name + "打电话");
}
public void sendMessage(){
System.out.println("给所有人群发短信");
}
}
PhoneDemo
package myTest;
/**
* Created by JackFeng on 2020/3/2.
*/
public class PhoneDemo {
public static void main(String[] args) {
Phone p = new Phone();
System.out.println(p.barnd + "---" +p.price+ "----"+p.color);
p.barnd = "iphone";
p.price = 8888;
p.color = "金色";
System.out.println(p.barnd + "---" +p.price+ "----"+p.color);
p.call("DataScience");
p.sendMessage();
}
}
成员变量和局部变量的区别
区别:
- A: 在类中的位置不同
- 成员变量:类中,方法外
- 局部变量:方法中或者方法声明上(形式参数)
- B:在内存中的位置不同
- 成员变量:堆内存
- 局部变量:栈内存
- C:生命周期不同
- 成员变量:随着对象的创建而存在,随着对象的消失而消失
- 局部变量:随着方法的调用而存在,随着方法调用完毕而消失
- D:初始化值的问题
- 成员变量:有默认值
- 局部变量:没有默认值,必须先定义,赋值,最后使用
package myTest;
/**
* Created by JackFeng on 2020/3/2.
*/
public class Variable {
// 成员变量
int x;
public void show (){
//局部变量
// int y; // 如果y 没有值 就会报错
int y = 1; // 赋值就会不报错
System.out.println(y);
// 调用x 有默认值
System.out.println(x);
}
}
标准学生类代码
package myTest;
/**
* Created by JackFeng on 2020/3/2.
*/
public class StudentDemo {
public static void main(String[] args) {
// 无参 + set方法
Student s = new Student();
s.setName("Data");
s.setAge(26);
System.out.println(s.getName()+"===="+s.getAge());
// 带参构造
Student s2 = new Student("DataScinece", 26);
System.out.println(s2.getName()+"===="+s2.getAge());
}
}
学生类
package myTest;
/**
* Created by JackFeng on 2020/3/2.
*/
public class Student {
private String name;
private int age;
// 构造方法
// 无参数
public Student(){}
// 有参数
public Student(String name, int age ){
this.name = name;
this.age = age;
}
// get set 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
类名
如果类名作为形式参数传递
- 要的是该类的对象
如果类名作为返回值类型
- 返回的是该类的对象