zoukankan      html  css  js  c++  java
  • javaday09面向对象---简单谈

    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;
    }
    }
  • 相关阅读:
    强大的Resharp插件
    配置SPARK 2.3.0 默认使用 PYTHON3
    python3 数据库操作
    python3 学习中的遇到一些难点
    log4j的一个模板分析
    MYSQL内连接,外连接,左连接,右连接
    rabbitmq实战记录
    领域模型分析
    分布式系统学习笔记
    阿里开发规范 注意事项
  • 原文地址:https://www.cnblogs.com/zach0812/p/11520013.html
Copyright © 2011-2022 走看看