zoukankan      html  css  js  c++  java
  • JAVA学习之路 (五) 类

    java类的学习

    先上一个代码

    package bankCard;
    import java.util.Scanner;
    
    // 银行卡类
    public class bankCard {
        // 静态变量
        static String host = "www.gcsn.site";
        // 成员变量
        private static int ID; // 账号
        private double blance; // 余额
        
        // 构造函数
        public bankCard() {
            // 无参构造函数
        }
        public bankCard(int id, double money) {
            //有参构造函数
            ID = id;
            blance = money;
        }
        
        // 成员函数(共有) / 成员方法
        public double intId() {
            // 存钱
            System.out.println("请输入您要存的钱数,只能是整钱");
            Scanner write_in = new Scanner(System.in);
            // 局部变量
            double money = write_in.nextInt();
            this.blance +=money;
            System.out.println("您的ID卡号为"+ID+"的账户存入"+money+"元余额为"+blance);
            
            return blance;
        }
        // 成员函数(共有)
        public double outId() {
            // 取钱
            System.out.println("请输入您要取出的钱数,只能是整钱");
            Scanner write_in = new Scanner(System.in);
            double money = write_in.nextInt();
            if(money > blance) {
                System.out.println("您的余额不足!当前余额为"+blance);
            }else {
                this.blance -=money;
                System.out.println("您的ID卡号为"+ID+"的账户取出"+money+"元,剩余余额为"+blance);
            }
            
            return blance;
        }
        
        public static void main(String [] args) {
            // 推荐使用类来访问
            System.out.println("static-----" +bankCard.host);
            System.out.println("static-----" +host); // 静态成员函数可以直接访问静态变量
            bankCard b1 = new bankCard(1234, 2000.00);
            b1.intId();
            b1.outId();
        }
    }
    

    成员变量和局部变量

    clipboard.png

    clipboard.png

    成员变量和局部变量的区别

    • 作用域不同
    局部变量只能在定义它的方法内使用。
    成员变量则是可以在整个类内都可以使用。
    • 初始值不同
    java会给成员变量一个初始值,
    java不会给局部变量一个初始值(必须自己初始化)。
    • 两类变量同名时,局部变量具有更高的优先级

    构造方法

    var car = new Car();
    
    // 通常我们都会new 实例化一个对象,其实new后面跟的就是构造方法
    使用new + 构造方法 来实例化一个新的对象。
    构造方法是定义在类中的,用来初始化一个对象。
    构造方法必须于类名相同,且没有返回值。
    
    当没有构造方法时,系统会自动添加一个无参的构造方法;
    如果自定义了一个构造方法,那么系统将不会为我们创建无参的构造方法了,也就无法调用无参的构造方法。
    
    构造方法的重载:
    方法名相同,但是参数不同的多个方法,调用的时候会根据不同的参数来选择相应的构造函数。

    clipboard.png

    类的成员方法

    1 类的成员方法的定义

    clipboard.png

    Java 中的 static 使用之【静态变量】

    我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立。然而在某些时候,我们更希望【该类所有的对象共享同一个成员】。此时就是 static 大显身手的时候了!!

    Java 中被 static 修饰的成员称为【静态成员或类成员】。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问。当然,鉴于他作用的特殊性更推荐用类名访问~~

    • 静态成员属于整个类,当系统第一次使用该类时,就会为其分配内存空间直到该类被卸载才会进行资源回收!~~
    public class HelloWorld {
        
        // 定义静态变量,保存班级名称
        static String host = "www.gcsn.site";
    
        public static void main(String[] args) {
            HelloWorld.host = 'www.baidu.com';
            // 访问静态变量,输出班级名称
            System.out.println("static-----" +HelloWorld.host);
        }
    }

    clipboard.png

    Java 中的 static 使用之【静态方法】

    与静态变量一样,我们也可以使用 static 修饰方法,称为【静态方法或类方法】。其实之前我们一直写的 main 方法就是静态方法。

    clipboard.png

    1. 静态方法可以直接调用静态变量,但是不能直接调用非静态变量

    clipboard.png

    如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。如

    clipboard.png

    2、 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量,

    clipboard.png

    3、 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。

    clipboard.png

    总结

    静态方法: 能够直接调用静态成员,不可以直接调用非静态成员, 不能够直接调用非静态方法
    普通方法, 既可以直接访问静态变量又可以访问非静态变量

    Java 中的初始化块和静态初始化块

    clipboard.png

    如果使用 static 修饰初始化块,就称为静态初始化块。

    静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。
    • 来看一个例子

    clipboard.png

    clipboard.png

  • 相关阅读:
    简单工厂模式
    1.go的Hello
    Scrapy003-项目流程
    Django1.9开发博客(6)- 模板继承
    Django开发博客- 页面美化
    Django开发博客- 三部曲
    Django开发博客- 部署
    Django开发博客- 模型
    Django开发博客 入门篇
    内装式模块
  • 原文地址:https://www.cnblogs.com/twodog/p/12136229.html
Copyright © 2011-2022 走看看