1.类
属性(是什么)
姓名,年龄。
行为(能做什么)
吃饭,喝水,睡觉,学习。
成员变量(属性):String name//姓名,int age//年龄
成员方法(行为):无static
public void eat()//吃饭
public void sleep()//睡
Ps:
1.成员变量是直接定义在类当中,在方法外。
2.成员方法不要写static关键字。
3.有static不需要new出来一个对象可以直接调用!!!!
2.对象
通常情况下一个类并不能直接使用,而是要根据类创建一个对象才可以使用。
1.导包:指出需要的类在什么位置,如果和当前类在同一个包中则不用写。
2.创建:
格式: 类名 对象名 = new 类名();
3.使用:
分为两种情况:
成员变量:对象名.成员变量名
成员方法:对象名.成员方法名(参数)
如果成员变量没有进行赋值,那么将会有一个默认值,规则和数组一样。
3.一个对象的内存图
!!!看书!!!
4.面向对象三大特性之封装性
1.方法就是一种封装
2.关键字private也是一种封装
5.关键字private
引例:比如我们用int定义一个年龄,当我设置年龄为负数时,显然不符合实际。这时候我们只需要在Int前面加上一个private,一旦使用private之后,在本类中可以任意访问,在该类之外就无法直接访问。
这时候如果还想在该类外访问参数,这时候就需要间接访问。
间接访问private成员变量,就是定义一对儿Getter/Setter方法
必须是setxxxx或者是Getxxxxx命名规则
对于Getter来说,不能有参数,返回值类型和成员变量对应
对于Setter来说,不能有返回值,参数类型和成员变量对应。
对于基本类型当中的boolean值,Getter方法一定要写成isXXX的形式,而setxxx规则不变
6.This关键字
7.成员变量与局部变量
1.定义的位置不一样:
局部变量:方法的内部
成员变量:在方法的外部,直接写在类之中
2.默认值不一样:
局部变量:没有默认值,如果想要使用必须手动进行赋值
成员变量:如果没有赋值,会有默认值,规则和数组一样。
3.作用范围不一样:
局部变量:只有方法当中才可以使用,除了方法就不能使用
成员变量:整个类都可以使用。
4.内存的位置不一样:
局部变量:位于栈内存
成员变量:在堆内存
5.生命周期不一样
局部变量:随着方法进栈而产生,随着方法出栈而消失
成员变量:随着对象创建而诞生,随着对象被垃圾回收而消失。
8.对象类型作为方法的返回值
当使用一个对象类型作为方法的返回值的时候,返回值其实就是对象的地址值
9.构造方法
格式:
public 类名称(参数类型 参数名称,…){
方法体
}
注意:
1.构造方法必须和类名称完全一样,就连大小写也要一样
2.构造方法不要写返回类型,void也不要。
3.构造方法不能不能return一个具体的返回值
4.如果没有编写任何构造方法,编译器会自动编写一个构造方法,没有参数,没有方法体。
!!5.一旦自己编写了一个构造方法,那么编译器就不再默认编写其他构造方法。!!!!!
6.构造方法可以重载
作用:
当用new关键字创建的时候,类名称就是方法名
10.标准的类
1.所有的成员变量都要使用private关键字修饰
2.为每一个成员变量编写一对儿Setter/Getter(IDEA快捷键 alt+insert,选择Getter and Setter, 按住shift把所有的成员变量都选上)
3.编写一个无参数的构造方法((IDEA快捷键 alt+insert,选择Constructor, 选择selete none )
4.编写一个全参数的构造方法((IDEA快捷键 alt+insert,选择Constructor,里面的都选上)
这个的标准类叫做Java Been
例:
Student 类
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 zhulei {
public static void main(String[] args) {
Student stu1 = new Student();
stu1.setAge(20);
stu1.setName("AsukaShin");
System.out.println("姓名:" + stu1.getName() + ",年龄:" + stu1.getAge());
Student stu2 = new Student("tiga", 21);
System.out.println("姓名:" + stu2.getName() + ",年龄 " + stu2.getAge());
stu2.setAge(22);
System.out.println("姓名:" + stu2.getName() + ",年龄 " + stu2.getAge());
}
}