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("录入不合法!请退出!");
}
}
}