zoukankan      html  css  js  c++  java
  • Java基础 Day08(类)

    一、类的语法格式

    访问修饰符 class 类名 {
             属性、特征
             方法、行为
         }

      1、类名首字母大写!
           2、类是对一组具有相同特征和行为的事物的抽象!
    二、类和对象的区别
           1、类是抽象的,而对象是具体的。
           2、类的范围更广。
           3、类是对象的模板,对象是类的实例。
           4、万事万物皆对象。

    public class Person {
        //特征,就是属性(成员变量),用来描述一个类中的信息
        String name;  //姓名
        String gender;//性别
        int age;      //年龄
        double height;//身高
        
        //行为、方法
        public void eat() {
            System.out.println("人在吃东西。");
        }
        public void sleep() {
            System.out.println("人在睡觉觉。");
        }
        //自我介绍
        public void introduce() {
            System.out.println("姓名:" + name + 
                                "性别:" + gender + 
                                "身高:" + height + 
                                "年龄:" + age);
        }

    三、创建对象

    类名 对象名 = new 构造方法;

      1、new关键字是用来创建对象的,对象本身存在于堆区
           2、person是变量名,也可以认为是对象名,存在于栈区
           3、person存储的是对象在堆区的地址,所以操作person就相当于操作对象本身

    注:只要是new出来的对象,哪怕内部属性一致,他们在堆区的地址也不一样!!!

    Person person = new Person();
            person.name = "花花";
            person.gender = "男";
            person.age = 18;
            person.height = 180.0;
            
            Person person1 = new Person();
            person1.name = "小小";
            person1.gender = "男";
            person1.age = 18;
            person1.height = 180.0;
            System.out.println(person);
            System.out.println(person1);    
            //类中对象方法的调用方法:对象名.方法
            person.introduce();
            //创建一个学生对象
            Student student = new Student();
            student.setName("三叔");
            System.out.println(student.getName());

    四、static关键字

      1、static修饰属性:static修饰属性,则改属性称为类属性。

        那么类属性与对象属性的区别是什么呢?

        1>别名:对象属性、成员变量、非静态变量
                   类属性、静态成员变量、静态变量

        2>声明周期:

          对象属性随着对象的创建而生成,对象销毁则销毁
               类属性随着类的加载而生成,jvm虚拟机终止或者程序退出
               类销毁时随之销毁。

        3>存储位置:

          对象属性属于对象所在堆区,而类属性属于类所在属于数据共享区

        4>访问方式:

          对象属性只能由对象去访问,而类属性既可以由类直接访问,
               也可以由对象访问,但是建议采用类访问。

    static int count;
        private String brand;
        public void setBrand(String brand){
            this.brand = brand;
        }    
        public String getBrand() {
            return brand;
        }

      2、static修饰方法:

        1>调用时可以使用类名,也可以使用对象,但是推荐使用
                 类名!而对象方法,只能由对象调用!

        2>类方法中只能直接访问类属性(static),不能直接访问
               对象属性,而对象方法中,都可以直接访问!想要在类方法中,访问对象
               属性,必须先创建对象,由对象访问

        3>静态方法中,只能直接调用静态方法,想要调用非静态方法,
               先创建对象,再由对象调用非静态方法。而非静态方法中
               既可以直接调用静态方法,也可以直接调用非静态方法!

    public static void staticMethod() {
            System.out.println("我是一个静态方法,也叫类方法");
    //        System.out.println(count);
    //        System.out.println(brand);
        }
        public void nonStaticMethod() {
            System.out.println("我是一个非静态方法,也叫对象方法");
            System.out.println(count);
            System.out.println(brand);
        }

    五、构造方法用来创建对象

      构造方法的名称与类名一致,且没有返回值,不是代表要写void,而是直接省略返回值的部分!!!

        1、一个类内部如果没有手动书写构造方法,那么系统
             默认会为此类提供一个无参数的构造方法
             2、当手动书写了有参构造方法,那么无参的就不会默认
             提供了,就需要我们手动将无参构造方法声明出来!!!

    public Car() {
            
        }
        public Car(String brand) {
    //        this.brand = brand;
            setBrand(brand);
        }

    六、局部变量与成员变量(属性)的区别?

         1、从定义位置区分:
         属性定义在类的内部,而局部变量定义在方法内部
         2、从作用范围区分:
         属性作用于整个类,而局部变量作用于声明此变量的方法内部
         3、从初值区分:
         属性默认有初值,引用类型为null,整数为0,浮点数为0.0
         而局部变量没有默认值,使用时必须保证有初值
         4、从生命周期区分:
         属性随着对象的创建而生成,随着对象的回收而销毁
         而局部变量随着方法的调用而生成,随着方法结束而销毁
         5、当一个方法中的局部变量与属性重名时,局部变量的优先级更高
         6、不同的方法中可以保存在同名的局部变量

    public class Student {
        /*
             属性的访问修饰符有四种:
             public公开的,protected受保护的,缺省,private私有
             为了满足javaBean的设计规范采用private
             将类的内部实现细节进行隐藏,不允许外界直接访问
             达到了封装的目的
         */
        /*
             this 关键字只能出现在对象方法中
             this 代表的是调用当前方法的对象!!!
         */
        private String name;
        private int age;
        /*属性私有,但是还是需要进行赋值、取值
             赋值我们称之为setter方法,完成对私有属性的赋值
             取值我们称之为getter方法,完成对私有属性的取值
        */
        /*
             setter方法赋值,为私有属性赋值是
             有参无返的方法
             并且方法要对外使用,所有访问修饰符为public
             赋值不需要返回值,所以返回值为void
             方法名:set + 属性名首字母变大写
             参数类型要与属性类型一致,并且参数名与属性名一致
         */
        public void setName(String name) {
            this.name = name;
        }
        /*
             getter方法取值
             无参有返的方法
             并且方法要对外使用,所有访问修饰符为public
             取值需要得到属性的值,所以返回值为获取的私有属性的类型
             方法名:get + 属性名首字母变大写
         */
        public String getName() {
            return name;
        }
        public void setAge(int age) {
            this.age = age;
        } 
        public int getAge() {
            return age;
        }
  • 相关阅读:
    VBS 操作Word
    VirtualMachineManager
    openssl用法详解
    JS获取浏览器窗口大小 获取屏幕,浏览器,网页高度宽度
    js实现touch移动触屏滑动事件
    JavaScript 获得代码行号和脚本文件名
    js的调用函数前先执行某语句问题
    结构型模式概述(Structural Pattern)
    适配器模式(Adapter Pattern)----------结构型模式
    CSAPP chapter2 记录(bit_level_coding)
  • 原文地址:https://www.cnblogs.com/aa1869/p/10638589.html
Copyright © 2011-2022 走看看