006-java基础语法之面向对象
1、类和对象
类:【类具有共同属性 以及行为的实物的抽象】
属性 通过成员变量,定义在类中方法外的变量 数据类型 变量名;
行为 通过成员方法,跟我们之前定义方法比较,少了static
public class 类名{
成员变量
成员方法
}
对象: 真实存在的实体
创建对象
类名 对象名 = new 类名();
成员变量:
对象名.属性名
成员方法:
对象名.方法名(参数);
1.1 案例:
//类就相当于是一张设计图
/*
1. 先创建一个类
2. 提供属性 数据类型 变量名;[成员变量,类中方法外]
3. 提供行为 跟我们之前定义方法比较,少了static[成员方法]
*/
// 封装类
public class Student { //Student 学生
//姓名
String name;
//年龄
int age;
//学习
public void study() { //study 学习
System.out.println("键盘敲烂 , 年薪百万");
}
public class StudentTest { // 学生的测试类
//作用 : 创建对象 使用对象
public static void main(String[] args) {
//s 就是一个对象。它就是Java世界中的一个学生
Student s = new Student();
s.name = "张三";
s.age = 23;
System.out.println(s.name + "..." + s.age);
s.study();
Student s2 = new Student();
s2.name = "李四";
s2.age = 24;
System.out.println(s2.name + "..." + s2.age);
s2.study();
}
2、成员变量和局部变量
成员变量 局部变量
定义位置: 类中方法外 方法内部或者方法参数列表位置
内存的位置: 堆内存 栈内存
生命周期: 随着对象的创建而创建 随着方法的调用而创建,随着方法的消失而消失
随着对象的消失而消失
初始化值: 有 没有
/*
成员变量:定义在类中方法外
局部变量:定义方法里面,或者方法参数列表
*/
public class Student {
String name;
int age;
public void show(String phoneNumber) {
int a;
// System.out.println(a);
System.out.println(name);
}
3、数据的安全性
private : 修饰成员的特点,只能在本类中访问
提供 set 方法,修改/赋值
提供 get 方法,给别的类获取值
4、this 的使用
this 使用原因:成员变量和 局部变量同名的时候,跟进就近原则,方法里面的变量 代表的是 局部变量
为了区分开 同名的成员变量和 局部变量,我们使用this.
this 修饰的变量 代表 类中的成员变量
5、构造方法
构造方法:
1.系统会默认给我们提供一个无参构造,如果你写了,系统不给你提供了
2.我们建议,你写构造方法的时候,需要提供无参和 满参构造
3.只能new的时候去调用构造方法,不能手动去调用**【不能通过对象去调用】**
构造方法:
权限修饰符 类名(){
}
a. 方法名和类名一致
b. 没有void 也没有其他的返回值类型
c. 也没有return
构造方法的作用 : 创建对象 初始化类的对象,并返回对象的地址 , 有参构造的作用就是在创建对象的同时去给成员变量进行赋值。
public class Person{
String name="张三";
public Person(){
name="李四";
}
public Person(String name){
this.name=name;
}
public void show(){
System.out.println(name);
}
}
public class Test{
public static void main(String[] args){
Person p1=new Person();
p1.show(); //李四
Person p2=new Person("王五");
p2.show();//王五
}
}
6、案例小节练习
1.私有所有的成员变量
2.给所有的成员变量提供对应 get/ set方法
3.给类提供无参 以及 满参构造
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
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;
}
}
public class StudentTest {
public static void main(String[] args) {
//无参 + set方法的
Student s = new Student();
s.setName("张三");
s.setAge(23);
System.out.println(s.getName() + "..." + s.getAge());
//使用满参创建对象
Student s2 = new Student("李四" , 24);
System.out.println(s2.getName() + "...." + s2.getAge());
}
}