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

来源:互联网 发布:古力娜扎五官分析知乎 编辑:程序博客网 时间:2024/06/02 19:00

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.javapackage 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.javapackage 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.javapackage 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.javapackage 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.javapackage 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.javapackage 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("录入不合法!请退出!");        }           }}
0 0
原创粉丝点击