JAVA 学习日记(2).面向对象,对象,类,封装,构造方法,重载

1.面向对象
面向对象编程 就是使用对象进行程序设计,简写成OOP。

2.对象
万物皆对象。
对象的具有的各种特征:属性。
对象执行的操作:方法。
对象的属性和方法通常被封装在一起,共同体现事物的特性, 二者相辅相承,不能分割。

方法的命名规则:
必须以字母、‘_’或‘$’开头。
可以包括数字,但不能以它开头。
通常方法名是一个动词,如果有两个以上单词组成,第一个单词的首字母小写, 其后单词首字母大写。

方法的返回值:
两种情况:
如果方法具有返回值,方法中必须使用关键字return返回该值,返回类型为该返回值的类型。
如果方法没有返回值,返回类型为void。

对象的使用步骤:
(1).使用new创建类的一个对象。
(2).使用对象:使用“.”进行以下操作:
给类的属性赋值:对象名.属性。
调用类的方法:对象名.方法名()。

3.类
类是模型,确定对象将会拥有的特征(属性)和行为(方法)。
事物的特性在类中用变量表示;每个对象的每个属性都拥有其特定的值;属性名称由类的所有对象共享;对象或实体拥有的特征在类中表示时称为属性。
事物的行为和动作在类中用函数(方法)表示;每个对象都有相同的动作和行为;
对象执行的操作在类中表示为方法。
所有Java程序都以类class为组织单元。
关键字class定义自定义的数据类型。

定义一个类的步骤:
(1)、定义类名。
(2)、编写类的属性。
(3)、编写类的方法。

4.封装
封装的概念:
封装,就是隐藏实现细节。
将属性私有化,提供公有方法访问私有属性。
通过这些公有方法访问私有属性 。

(属性私有化,提供公有方法,访问私有属性。)

封装的实现:
(1)、修改属性的可见性来限制对属性的访问。
(2)、为每个属性创建一对赋值(setter)方法和取值(getter) 方法,用于对这些属性的访问。
(3)、在setter和getter方法中,加入对属性的存取限制。

5.构造方法
构造方法负责对象成员的初始化工作,为实例变量赋予合适的初始值。
构造方法必须满足以下语法规则:
(1)、方法名与类名相同。
(2)、没有返回类型。
使用new关键字调用构造方法。
通过带参数的构造方法,显式地为实例变量赋予初始值。
通过调用带参数的构造方法,简化对象初始化的代码。

6.重载
方法重载可以方便方法的调用者,但方法重载应遵循三大原则:
方法名相同。
参数列表不同。
属于同一作用域。
可以适当地重载构造方法,使初始化对象的方式更加灵活;this引用总是指向调用方法的对象本身;静态成员属于类而不是属于某个对象。

7.练习
(1).定义一个管理员类:
属性:用户名 密码
方法:
显示管理员信息的方法:返回管理员用户名和密码的信息;
验证用户密码的方法:传入用户名和密码的参数,返回布尔类型,用户名和密码是否正确。
编写一个测试类,创建一个管理员类,初始化设置用户名和密码,控制台接收用户输入的用户名和密码,调用验证的方法,显示是否登录成功。

package com.zrgj.shanji;

public class Login {
    String userName;
    String userPwd;

    public Login(String userName,String userPwd){
        this.userName="小萝莉";
        this.userPwd="123";         
    }
    public Login(){ 
    }
    public void login() {
        System.out.println("用户名:"+userName+""+"密码:"+userPwd);
    }

    public boolean test(String name,String pwd){
        if(name.equals(userName)&&pwd.equals(userPwd)){
            return true;
        }
        return false;
    }   
}
package com.zrgj.shanji;

import java.util.Scanner;

public class LoginTest {
    public static void main(String[] args) {
        Login xiaowang=new Login("小萝莉","123");
//      xiaowang.userName;
//      xiaowang.userPwd;
        Login xiaowang2=new Login();
        Scanner scan=new Scanner(System.in);
        String name=scan.next();
        String pwd=scan.next();

        boolean boo=xiaowang.test(name, pwd);
        if(boo){
            System.out.println("正确进入!");
        }else{
            System.out.println("输入错误!");
        }       
    }
}

(2).创建一个程序员类和项目经理类
封装两个类的所有属性,生成getter和setter方法;
为两个类分别编写两个构造函数,一个无参构造函数要求为所有属性设置默认值,另一个是带所有属性参数的构造函数。
编写测试类,分别创建两个程序员和两个项目经理,并调用show()方法显示详细信息。

程序员类 SE

属性:
员工编号:id
姓名:name
性别:gender
工资:salary
关注度:hot

方法:
显示程序员的详细信息:show()

项目经理类 PM
属性:
员工编号:id
姓名:name
性别:gender
工资:salary
项目经验:exp
项目分红:bonus

方法:
显示项目经理的详细信息:show()

SE.java

package com.zrgj.shanji;

public class SE {
//  定义私有属性
    private int id;
    private String name;
    private String gender;
    private int salary;
    private String hot;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    public int getSalary() {
        return salary;
    }
    public void setSalary(int salary) {
        this.salary = salary;
    }
    public String getHot() {
        return hot;
    }
    public void setHot(String hot) {
        this.hot = hot;
    }

//  创建调用方法
    public void show() {
        System.out.println("员工编号:"+id+"\n"+"姓名:"+name+"\n"+"性别:"+gender+"\n"+"工资:"+salary+"\n"+"关注度:"+hot); 
    }
}
SETest.java

package com.zrgj.shanji;

public class SETest {
    public static void main(String[] args) {
//      程序员小王的信息
        SE xiaowang=new SE();
        xiaowang.setId(1234);
        xiaowang.setName("小王");
        xiaowang.setGender("女");
        xiaowang.setSalary(10000);
        xiaowang.setHot("99");
        xiaowang.show();

//      程序员小王2的信息
        SE xiaowang2=new SE();
        xiaowang2.setId(1235);
        xiaowang2.setName("小王2");
        xiaowang2.setGender("女");
        xiaowang2.setSalary(10002);
        xiaowang2.setHot("98");
        xiaowang2.show();
    }
}
PM.java

package com.zrgj.shanji;

public class PM {
//  定义私有属性
    private int id;
    private String name;
    private String gender;
    private int salary;
    private int exp;
    private int bonus; 
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    public int getSalary() {
        return salary;
    }
    public void setSalary(int salary) {
        this.salary = salary;
    }
    public int getExp() {
        return exp;
    }
    public void setExp(int exp) {
        this.exp = exp;
    }
    public int getBonus() {
        return bonus;
    }
    public void setBonus(int bonus) {
        this.bonus = bonus;
    }
}
PMTest.java

package com.zrgj.shanji;

public class PMTest {
    public static void main(String[] args) {
        //  经理小刘的信息 
        PM xiaoliu=new PM();
        xiaoliu.setId(1234);
        xiaoliu.setName("小刘");
        xiaoliu.setGender("男");
        xiaoliu.setSalary(10000);
        xiaoliu.setExp(99);
        xiaoliu.setBonus(999);
        show(xiaoliu);
        //  经理小刘2的信息
        PM xiaoliu2=new PM();
        xiaoliu2.setId(1234);
        xiaoliu2.setName("小刘2");
        xiaoliu2.setGender("男");
        xiaoliu2.setSalary(10009);
        xiaoliu2.setExp(100);
        xiaoliu2.setBonus(9998);
        show2(xiaoliu2);        
    }
    private static void show(PM xiaoliu) {
        System.out.println("员工编号:"+xiaoliu.getId()+"\n"+"姓名:"+xiaoliu.getName()+"\n"+"性别:"+xiaoliu.getGender()+"\n"+"工资:"+xiaoliu.getSalary()+"\n"+"项目经验:"+xiaoliu.getExp()+"\n"+"项目分红:"+xiaoliu.getBonus());
    }
    private static void show2(PM xiaoliu2) {
        System.out.println("员工编号:"+xiaoliu2.getId()+"\n"+"姓名:"+xiaoliu2.getName()+"\n"+"性别:"+xiaoliu2.getGender()+"\n"+"工资:"+xiaoliu2.getSalary()+"\n"+"项目经验:"+xiaoliu2.getExp()+"\n"+"项目分红:"+xiaoliu2.getBonus());
    }
}

(3).编写会员类:
属性:
会员号
会员姓名
积分
方法:
验证会员号是否合法 (判断录入是否合法(会员号必为4位整数))
抽奖是否是幸运用户 (员号的百位数字等于产生的随机数字即为幸运会员)
返回折扣(x < 2000 9折
2000<=x<4000 8折
4000<=x<8000 7折
x>=8000 6折)
编写测试类:

接收控制台用户输入会员号、会员姓名、积分,创建一个会员对象,验证会员号是否合法,不合法提示退出,合法保存会员数据,同时显示当前用户的折扣信息,最后进行抽奖,提示是否是幸运用户。

Huiyuan.java

package com.zrgj.shanji;

public class Huiyuan {
//  定义会员属性
    private int id;
    private String name;
    private int score;
    public int getId() {
        r
        turn id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getScore() {
        return score;
    }
    public void setScore(int score) {
        this.score = score;
    }

//会员号合法的条件
    public boolean validate(int id){
        return id>1000 && id<9999;
    }

//  折扣条件
    public double getCut(){
        if(score<2000){
            return 0.9;
        }else if (score<4000) {
            return 0.8;
        }else if(score<8000){
            return 0.7;
        }else{
            return 0.6;
        }   
    }   
}
HuiyuanTest.java

package com.zrgj.shanji;

import java.util.Scanner;

public class HuiyuanTest {

    public static void main(String[] args) {

//      扫描输入
        Scanner scan=new Scanner(System.in);
        System.out.println("请输入会员号:");
        int id=scan.nextInt();
        System.out.println("请输入会员姓名:");
        String name=scan.next();
        System.out.println("请输入会员积分:");
        int score=scan.nextInt();

//      创建会员对象
        Huiyuan xiaowang=new Huiyuan();
//      判断录入是否合法,合法保存会员数据,同时显示当前用户的折扣信息,最后进行抽奖,提示是否是幸运用户
//      不合法则提示退出
        if(xiaowang.validate(id)){
            System.out.println("录入成功!");
            System.out.println("您的折扣为:"+xiaowang.getCut());
            int random = (int) (Math.random() * 10);
            int baiwei = id / 100 % 10;
            if (random==baiwei) {
                System.out.println("恭喜您成为幸运会员!");
            }else{
                System.out.println("很遗憾,您没有抽中!");
            }
        }else{
            System.out.println("录入不合法!请退出!");
        }       
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值