java语言优势:
面向对象编程核心:
对象是什么?
如何创建对象?
面向对象编程(OOP):所有的功能实现都是基于对象,都是通过对象进行完成
依靠class(类)进行实现:
? 一个类别class可以创建出来n个对象,每个对象都有唯一的class与之相对应
多个对象的模板(对象共有的一些信息)
对于学生来说:学生编号 学生姓名 学生成绩 学习行为
访问权限修饰符   普通修饰符   数据类型  变量名 = 数据;
类名   对象名(变量/实例/引用) = new 类名(); 
类名   对象名(变量/实例/引用) = new 构造方法; 
public class Student {
    //类的组成部分
    //成员变量(属性) 成员方法(行为)
    //成员变量
    public int stuId;
    public String stuName;
    public double stuScore;
    //成员方法
    public void Study(){
        System.out.println(stuName+"在学习....");
    }
    public static void main(String[] args) {
        Student meilin = new Student();
        System.out.println(meilin);
                meilin.Study();
    }
}

   对象名.成员变量; 
   对象名.成员方法(); 
public class Student {
    //类的组成部分
    //成员变量(属性) 成员方法(行为)
    //成员变量
    //当加上static后 数据就成了共享的
    public int stuId;
    public String stuName;
    public double stuScore;
    //成员方法
    public void Study(){
        System.out.println(stuName+"在学习....");
    }
    public static void main(String[] args) {
        Student meiLin = new Student();
        System.out.println(meiLin);
        meiLin.Study();
        System.out.println("===========");
        Student chenRan = new Student();
        System.out.println(chenRan);
        chenRan.stuId = 1002;
        chenRan.stuName = "陈然";
        chenRan.stuScore = 100;
        System.out.println("学生的编号:"+chenRan.stuId);
        System.out.println("学生的姓名:"+chenRan.stuName);
        System.out.println("学生的成绩:"+chenRan.stuScore);
        chenRan.Study();
    }
}

作用:对成员变量初始化数据
类名   对象名(变量/实例/引用) = new 构造方法; 
创建对象其实是结合构造进行创建的。
在任意一个类里面,都默认存在一个无参的构造。如果写了有参构造的话,会把无参给覆盖掉。(就不能使用无参构造进行对象创建了)
初始化:
作用域:
生命周期:
内存:
作用: 对数据(成员变量)的封装.
实现方式:
将成员变量访问权限修饰符改成private
private:只能修饰成员变量和成员方法 。只能在本类里面直接访问。
提供对外的set(赋值)/get(获取)
开发中set/get方法不允许写任何逻辑
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private String username;
    private String password;
    private int cardNo;
    private boolean isRegister;
    private boolean isLogin;
}
import java.util.Arrays;
import java.util.Scanner;
/**
 * @Packagename: 类与对象.lucky
 * @Classname: LuckyMain
 * @author: ChengGang
 * @Date: 2020/12/31 23:05
 * @version: IntelliJ IDEA 2020.3
 * JDK 11.0.7
 */
public class LuckyMain {
    private Scanner input;
    private User user;
    public void init() {
        //初始化成员变量
        input = new Scanner(System.in);
        user = new User();
    }
    public void start() {
        String answer;
        do {
            System.out.println("*********欢迎进入游客抽奖系统*************");
            System.out.println("\t\t\t 1. 注册");
            System.out.println("\t\t\t 2. 登录");
            System.out.println("\t\t\t 3. 抽奖");
            System.out.println("*********欢迎进入游客抽奖系统*************");
            System.out.println("请选择类型:");
            int choice = input.nextInt();
            switch (choice) {
                case 1:
                    //之前注册过,就不需要再注册
                    if (user.isRegister()) {
                        System.out.println("已经注册,无需继续注册");
                        break;
                    }
                    user = userRegister();
                    break;
                case 2:
                    user.setLogin(userLogin());
                    break;
                case 3:
                    lucky();
                    break;
                default:
                    System.out.println("录入错误,请重新录入");
            }
            System.out.println("是否继续 y/n");
            answer = input.next();
        } while ("y".equals(answer));
        System.out.println("程序退出...");
    }
    /**
     * 实现用户抽奖
     */
    private void lucky() {
        if (!user.isLogin()) {
            System.out.println("请先登录!");
            return;
        }
        System.out.println("3. 会员抽奖");
        while (true) {
            System.out.print("请输入会员卡号:");
            int cardNumber = input.nextInt();
            if (cardNumber == user.getCardNo()) {
                break;
            } else {
                System.out.println("卡号错误!请重新录入!");
            }
        }
        int[] luckyNum = new int[5];
        boolean isLucky = false;
        for (int i = 0; i < 5; i++) {
            luckyNum[i] = (int) (Math.random() * 9000 + 1000);
        }
        for (int num : luckyNum) {
            if (num == user.getCardNo()) {
                System.out.println("中奖卡号为:" + Arrays.toString(luckyNum));
                System.out.println("恭喜您中奖了......");
                isLucky = true;
                break;
            }
        }
        if (!isLucky) {
            System.out.println("中奖卡号为:" + Arrays.toString(luckyNum));
            System.out.println("抱歉您未中奖,下次继续努力");
        }
    }
    /**
     * 实现用户登录
     **/
    private boolean userLogin() {
        if (!user.isRegister()) {
            System.out.println("请先注册!");
            return false;
        }
        System.out.println("2. 会员登录");
        int count = 3;
        while (count >= 1) {
            System.out.print("请输入用户名:");
            String userName = input.next();
            System.out.print("请输入用户密码:");
            String password = input.next();
            if (!userName.equals(user.getUsername()) || !password.equals(user.getPassword())) {
                count--;
                if (count == 0) {
                    System.out.println("用户名或密码错误!登录失败!");
                    return false;
                }
                System.out.println("用户名或密码错误!登录失败!你还有" + count + "次输入机会");
            } else {
                System.out.println("登录成功");
                break;
            }
        }
        System.err.println("欢迎你" + user.getUsername());
        return true;
    }
    /**
     * 实现用户注册
     **/
    private User userRegister() {
        System.out.println("1. 注册");
        System.out.print("请输入用户名:");
        String userName = input.next();
        System.out.print("请输入用户密码:");
        String password = input.next();
        System.out.println("success!请牢记会员卡号");
        int cardNum = (int) (Math.random() * 9000 + 1000);
        System.out.println("用户名\t 密码\t 会员卡号");
        System.out.println(userName + "\t" + password + "\t" + cardNum);
        return new User(userName, password, cardNum, true, false);
    }
}
public class LuckyApp {
    public static void main(String[] args) {
        LuckyMain luckyMain = new LuckyMain();
        luckyMain.init();
        luckyMain.start();
    }
}
原文:https://www.cnblogs.com/cgcnblog/p/14235021.html