这一部分确实好绕,好难懂,好复杂,那么三好后我们就开始吧
1. 类产生对象,面向对象需要先找到类,由类产生对象的过程叫做实例化
类的表达 46. class PersonalMessage{ //包含属性(字段)——————>"模板中"成员变量{普通成员变量(内存在对象里头),静态成员变量} 如: public String name ="旺财"; //包含方法——————>成员方法 public void eat(){ System.out.println(name+"正在吃饭"); } }
对类的使用,在main函数中 引用类格式: 类名 引用变量 =new 类名(); //这里就通过类产生新的对象——————>包含类中的成员 (当这里等于的是null,则这个引用变量不指向任何对象) 假设 class Person{ 在main函数中 Person person = new Person(); Person person1 =null; // Person person2 =person; //person,person2这个引用指向同一个对象 } 改变类中的成员变量: 引用变量 . 类中的成员变量 ="改变的数据" //引用变量自己设置,存储一块地址 System.out.println(引用变量 . 成员变量); //输出改变的数据或者是类中成员变量的数据 //衔接46 PersonalMessage person1=new PersonalMessage(); System.out.println(person1.name);————>输出 旺财 PersonalMessage person2 =new PersonalMessage(); person2.name="二哈";//改变了对象,类中的源对象不影响现对象,新开辟了一个栈中的内存 System.out.println(person2.name);————>二哈 当46中直接为 public String name; PersonalMessage person1=new PersonalMessage(); System.out.println(person1.name);————>输出null 为空 PersonalMessage person2 =new PersonalMessage(); person2.name="二哈";//改变了对象,类中的源对象不影响现对象,新开辟了一个栈中的内存,放着这个新对象 System.out.println(person2.name);————>二哈
2.
当类中定义了成员变量,中有静态成员变量(也叫做类变量,只能在类中,方法外定义,储存在了方法区),静态成员变量独立于对象
例如: class People{ public int age; public static int num; } public class text{ public static void main(String[] args){ People person1 =new People(); person1.age++; //这里需要新建对象 person.num++;// 静态成员变量是类的,访问方式: 类名.变量名——————> 不依赖对象,不用new 多一个对象 System.out.println(person1.age); System.out.println(person.num); } } //当用多个引用变量产生多个对象是也产生多个"相同"的成员变量时 例如: age有很多个age?取决于有几个对象 同理也有静态方法(类方法)
3.普通方法(依赖对象)中不能定义静态成员变量,可以调用静态方法(使用区域更大)
4.
对于java新建文件后就在一个大类中,创造新类需要与大类独立,然后我们可以发现大类当中我们定义方法public static 方法名 符合类中方法是否静态的差别与是否需要对象,然后jvm底层规定main函数为static
5.
private修饰封装
当属性与方法被private修饰后,封装只能在这个类中使用 例如: class Person{ //在类中封装后 private String name; public void setName(String name){ //在main输入字符串 this.name=name; } public String getName(){ return name; } //当用private封装时需要构造,set和get两个public方法,右键鼠标generate处按get and set private int age; public void setAge(int age){ //在main输入数字 this.age=age; //this表示当前对象的引用 } public int getAge(){ return age; } } 然后在大类的main中 public class Main { public static void main(String[] args){ Person person1 =new Person(); person1.setAge(10);//用setAge来设置封装后age, System.out.println(person1.getAge());//getAge; People.setName("Chen");/ System.out.println(person1.getName()); } } }
6.关于构造方法
构造方法(一个类至少有一个构造方法) 类中会自动产生一个空白的构造方法(没有其他构造方法时) 在main内产生了对象People person=new People() 的同时,进行了构造方法 既是class People(){ public People(){ ————————>构造方法里面可以加上不同的类型 System.out.println("这是个构造函数"); } } 然后在main中 People person =new People();——————> 这里会输出"这是个构造函数" 构造方法用来构造对象 54.当有多个构造方法时 public People(){ System.out.println("这是个构造函数"); } public People(String name){ this.name=name; } public People(String name,int age){ this.name=name; this.age=age; } 在main函数调用时,//括号内几个参数就调用上面的哪个构造方法 People person1 = new People(); People person2 = new People("Chen"); People person3 = new People("Chen",20);
7.关于this
this. 数据 调用当前对象的数据 this. 方法() 调用当前对象的方法 this() 调用当前对象的其他构造方法//只能存放在构造方法中
这里放几张图,this()的使用
public People(){ System.out.println("这是个构造函数"); } public People(String name){ } public People(String name,int age){ }
8.匿名对象
匿名对象(没有引用直接产生的对象,一次性用法) 直接 new 类名().类中的方法();