Home

韧桂

思考,总结

创建Java类并实例化对象_详解Java类的属性与局部变量_详解Java类的方法的使用

创建Java类并实例化对象 详解Java类的属性与局部变量 详解Java类的方法的使用

package five.object;
/*
1.面向对象的编程关注于类的设计
2.设计类实际上就是设计类的成员
3.基本的类的成员:属性(成员变量 或 Field) & 方法(函数 或 Method)
 */
/*
一、面向对象思想的落地法则一:
1.设计类,并设计类的成员(成员变量&成员方法)
2.通过类,来创建类的对象(也称作类的实例化)
3.通过:"对象.属性"或"对象.方法" 来调用,完成相应的功能

二、创建的多个对象,彼此各自拥有一套类的属性。当对其中一个对象的属性进行修改时,不会影响到其他对象的属性值。

 三、类的属性(成员变量)
    成员变量 VS 局部变量
    相同点:1.遵循变量声明的格式:数据类型 变量名 = 初始化值;
          2.都有作用域//出了范围不管用
    不同点:1.声明的位置不同:成员变量:声明在类里,方法外
                         局部变量:声明在方法内,方法的形参部分,代码块内
          2.成员变量的修饰符有四个:public private protected 缺省
             局部变量没有修饰符,与所在的方法修饰符相同。
          3.初始化值:一定会有初始化值。
            成员变量:如果在声明的时候,不显式的赋值,那么不同数据类型会有不同的默认初始化值。
                byte short int long ==> 0
                float double ==> 0.0
                char ==> 空格
                boolean ==> false
                引用类型变量 ==> null
            局部变量:一定要显式赋值。(局部变量没有默认初始化值)
          4.二者在内存中存放的位置不同:成员变量存在于堆空间中;局部变量存在于栈空间中。

总结:关于变量的分类:1)按照数据类型分:基本数据类型(8种) & 引用数据类型
                 2)按照声明的位置分:成员变量 & 局部变量


四、类的方法:提供某种功能的实现
    1)实例:public void eat(){//方法体}
            public String getName(){}
            public void setName(String n){}
      格式:权限修饰符 返回值类型(void:无返回值 / 具体的返回值) 方法名(形参){}

    2)关于返回值类型:void:表明此方法不需要返回值
                    有返回值的方法:在方法的最后一定有 return + 返回值类型对应的变量
       记忆:void 与 return 不可以同时出现在一个方法内。
    3)方法内可以调用本类的其他方法或属性,但是不能在方法内再定义方法!
 */

import java.util.Scanner;

public class Five {
    public static void main(String[] args) {
        //基本数据类型的声明:数据类型 变量名 = 初始化值;
        int i = 10;
        //类的实例化:如下的a1就是一个实实在在的对象
        People a1 = new People();//引用数据类型

        //通过对象调用属性
        a1.name = "唐雅";//根据创建的数据类型赋予不同的值。引用数据类型
        a1.age = 22; //int型
        System.out.println("name:" + a1.name + " age:" + a1.age);

        //通过对象调用方法
        a1.eat();
        a1.sleep();

        //再创建一个类的对象
        People a2 = new People();
        System.out.println("name:" + a2.name + " age:" + a2.age);
        a2.name = "唐舞桐";
        a2.age = 14;
        System.out.println("name:" + a2.name + " age:" + a2.age);

        //a3不意为着相较于a1重新创建的一个对象,而是a1与a3共用一个对象实体。
        People a3 = a1;
        System.out.println("name:" + a3.name + " age:" + a3.age);//与 a1 一样
        a3.name = "宁荣荣";
        System.out.println("a1.name:" + a1.name + " age:" + a1.age);

        //讲解二
        System.out.println();
        SevenShrekMonsters s1 = new SevenShrekMonsters();
        s1.info();

        s1.name = "朱竹青";
        s1.age = 18;
        s1.sex = true;
        s1.info();

        s1.setName("江楠楠");//调用方法。与调用属性 s1.name = "江楠楠";的结果一样,
        s1.info();

        System.out.println();
        SevenShrekMonsters s2 = s1;
        System.out.println("s1:" + s1);
        System.out.println("s2:" + s2);
        s2.info();

        System.out.println();
        s2 = new SevenShrekMonsters();
        System.out.println("s2:" + s2);
        s2.info();

        //实例化Scanner类的对象,通过此对象 .nextXxx() 调用。完成相应的功能。
        Scanner s = new Scanner(System.in);
        int a = s.nextInt();

    }
}

//类:是抽象的
class People{
    //1.属性:
    String name;
    int age;
    boolean sex;

    //2.方法
    public void eat(){
        System.out.println("人吃饭");
    }
    public void sleep(){
        System.out.println("人睡觉");
    }
}


class SevenShrekMonsters{
    //1.属性:
    String name;
    int age;
    boolean sex;

    //2.方法
    public void eat(){
        System.out.println("戴雨浩吃饭");
    }
    public void sleep(){
        System.out.println("王冬睡觉");
    }

    //当通过对象调用此方法时,会将方法的方法的返回值提供给方法的调用者,也就是当前的对象
    public String getName(){ //获取名字
        return name;
        //其后不可声明语句
    }
    //给属性name赋值
    public void setName(String n){ //改名
        name = n;
    }
    public void info(){
        //可以方法内可以调用本类的其他方法或属性,但是不能在方法内再定义新的方法!
        eat();
        sleep();
        System.out.println("name:" + name + " age:" + age + " sex:" + sex);

//        //非法
//        public void breath(){
//            System.out.println("决斗啊");
//        }
    }
}

韧桂 2020-01-14