当前位置 : 主页 > 手机开发 > 其它 >

javaday09面向对象---简单谈

来源:互联网 收集:自由互联 发布时间:2021-06-19
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;
}
}
网友评论