Java day09 面向对象 一:成员变量和局部变量的区别 局部变量是没有默认值的。 还有一个是: 4 ,内存的位置不同。 5, 生命周期不同: 二:内存图(形参为引用类型时) 继续执行: 调
Java day09 面向对象
一:成员变量和局部变量的区别
局部变量是没有默认值的。
还有一个是:
4,内存的位置不同。
5,生命周期不同:
二:内存图(形参为引用类型时)
继续执行:
调用function,压栈执行:
以前说的是数组是引用类型,
现在要说的是类,它也是引用类型
三:封装
private修饰符:
它属于成员修饰符,它只能修饰成员变量,不能修饰局部变量。
第一个文件:
Person.java
package cn.zcb.demo; public class Person { private String name; private int age; public void set_Name_Age(String myName,int myAge){ name = myName; if(myAge <0 || myAge>200){ //对外界传来的值进行限制 myAge = 20; }else{ age = myAge; } } public String getName(){ return name; } public int getAge(){ return age; } public void speak(){ System.out.println(name +" "+ age); } } 第二个文件: Test.java package cn.zcb.demo; public class Test{ public static void main(String [] args){ Person person = new Person(); person.set("tom",18); System.out.println("Name : "+person.getName() +" Age: "+person.getAge()); // System.out.println(person.name); //这时不能访问name 和age ,因为它们被private 修饰了 } }
一定要写getXXX ,setXXX 方法。
this关键字:
它的主要的作用是区分成员变量和局部变量的重名的问题。
它可以防止,下面的问题:
方法要使用成员变量,但是却因为重名而使用了局部变量。
package cn.zcb.demo; public class Person { private String name; private int age; public void set_Name_Age(String myName,int myAge){ this.name = myName; if(myAge <0 || myAge>200){ //对外界传来的值进行限制 this.age = 20; }else{ this.age = myAge; } } public String getName(){ return this.name; } public int getAge(){ return this.age; } public void speak(){ System.out.println(this.name +" "+ this.age); } }
this内存图:
This 也指向这个内存空间。
四:随机点名器案例:
Student
package cn.zcb.demo; public class Student { private String name; private int age; public void setName_Age(String name,int age){ this.name = name; this.age = age; } public String getName(){ return name; } public int getAge(){ return age; } }
CallName.java
package cn.zcb.demo; import java.util.ArrayList; import java.util.Random; public class CallName { public static void main(String[] args){ ArrayList<Student> arrayList = new ArrayList<Student>(); addStu(arrayList); showStu(arrayList); Student stu = randomStu(arrayList); System.out.println(stu.getName() + " "+stu.getAge()); } public static void addStu(ArrayList<Student> arr){ Student s1 = new Student(); s1.setName_Age("egon",18); Student s2 = new Student(); s2.setName_Age("alex",28); Student s3 = new Student(); s3.setName_Age("tom",19); arr.add(s1); arr.add(s2); arr.add(s3); } public static void showStu(ArrayList<Student> arr){ for (int i = 0; i < arr.size(); i++) { Student s = arr.get(i); System.out.println("Name : " + s.getName() +" "+s.getAge()); } } public static Student randomStu(ArrayList<Student> arr){ Random random = new Random(); int idx = random.nextInt(arr.size()); Student s = arr.get(idx); return s; } }