1.面向对象

类和对象的关系

类是我们在生活中,对身边的一系列事物,进行的不自觉的分类!
只是脑海中的一个印象! 在现实生活中,不存在!
存在的是我们这个印象的具体反映!

对象:用来描述客观事物的一个实体,由一组属性和方法构成!

01.类是对象的模版
02.对象是类的实例(具体)
03.对象 和 类 满足 is a的关系
04.每个对象都是独一无二的


张三有年龄,身高,体重,性别
李四有年龄,身高,体重,性别
王五有年龄,身高,体重,性别

01.上诉三个人我们称之为对象!
02.上诉三个人都有相同的特征!这个特征我们称之为 对象的属性!

张三能唱歌,跳舞,吃饭,睡觉
李四能唱歌,跳舞,吃饭,睡觉
王五能唱歌,跳舞,吃饭,睡觉
01.上诉三个人能唱歌,跳舞,吃饭,睡觉,我们称之为对象的行为!
02.上诉三个人都有相同的行为!我们在java中称之为 对象的方法!

我们把有共同特征和行为的一些对象,封装成人类!

********************************************************************

OOA(object oriented analysis) 面向对象分析

OOD (object oriented design) 面向对象设计

OOP (object oriented programming) 面向对象编程

我们先根据需求
01.按照面向对象的思想进行 OOA(面向对象分析),
02.之后按照面向对象的思想进行 OOD(面向对象设计),
03.最后按照面向对象的思想进行OOP (面向对象编程)。

********************************************************************
面向对象的优势:
01.与我们的思维习惯一致!
02.提高了程序的可重用性!
03.信息隐藏,提高程序的可维护性和安全性!


面向对象的三大特性:
01.封装
02.继承
03.多态


访问权限的作用域:
01.类
02.方法
03.属性

访问权限访问修饰符:
public 在任何包中的类 都能访问
protected 只能在子类中访问,不管同不同包!
private 仅限于本类中访问
default (底层没有 ,不能显式的写入)

以属性举例:
01.如果属性
int age;前面没有加访问修饰符!
默认 只能在 本包中的其他类中访问此属性!

02.如果是 private int age;
仅限于本类中访问!

03.如果是 protected int age;
只能在子类中访问,不管同不同包!

04.如果是 public int age;
在任何包中的类 都能访问

2.案例:

01.学生类:

***************************************************

public class Student {
String name;//姓名
int age;//年龄
char sex;//性别
public void show(){
System.out.println("姓名:"+name);
System.out.println("年龄:"+age);
System.out.println("性别:"+sex);
**************************************************

public class StudentTest {

/**
* @param args
*/
public static void main(String[] args) {
Student stu1 = new Student();
stu1.name = "张三";
stu1.age = 25;
stu1.sex = '男';
stu1.show();

}

}

************************************************

02.顾客类:

*********************************************************

public class Customer {

/**
* 输出客户可类型 积分
* 金卡积分大于1000,回馈500
* 普通卡积分大于5000,回馈500
*/
String cardtype;//卡类型
int points;//积分
public void show(){
Scanner input = new Scanner(System.in);
System.out.println("请输入卡类型:");
cardtype = input.next();
System.out.println("请输入积分:");
points = input.nextInt();
System.out.println("积分:"+points+",卡类型:"+cardtype);
}
public void getPoints(){
Scanner input = new Scanner(System.in);
System.out.println("请输入卡类型:");
cardtype = input.next();
System.out.println("请输入积分:");
points = input.nextInt();
if(cardtype.equals("金卡")){//判断卡类型
if(points>=1000){//判断积分是否满足回馈条件
points = points + 500;
System.out.println("回馈积分:500");
System.out.println("积分:"+points+",卡类型:"+cardtype);
}else{
System.out.println("不满足积分回馈条件!");
System.out.println("积分:"+points+",卡类型:"+cardtype);
}
}
if(cardtype.equals("普通卡")){//判断卡类型
if(points>=5000){//判断积分是否满足回馈条件
points = points + 500;
System.out.println("回馈积分:500");
System.out.println("积分:"+points+",卡类型:"+cardtype);
}else{
System.out.println("不满足积分回馈条件!");
System.out.println("积分:"+points+",卡类型:"+cardtype);
}
}

}

*********************************************************************

public class CustomerTest {


public static void main(String[] args) {
Customer test = new Customer();
test.show();
System.out.println("*******************************");
Customer test1 = new Customer();
test1.getPoints();
}

}

****************************************************************

03.管理员类:

*****************************************************************

public class Administrator {

/**
* 管理员 用户名密码
* 用户名密码正确时可修改密码
*/
String name;//用户名
String passWord;//密码
public void show(){//输出用户名密码
System.out.println("用户名为:"+name);
System.out.println("密码为:"+passWord);
}
Scanner input = new Scanner(System.in);
public void getKey(){//修改密码
boolean key = false;//循环条件初始值
do{//do while循环来进行修改密码循环操作
/**
* 接收用户输入用户名密码
*/
System.out.println("用户名:");
name = input.next();
System.out.println("密码:");
passWord = input.next();
/**
* 判断用户输入是否正确,正确进入结构
*/
if(name.equals("admin")&&passWord.equals("111111")){
System.out.print("请输入新密码:");
passWord = input.next();
System.out.println("修改密码成功,新密码为"+passWord);
key = true;//输入正确时循环条件为true,不再进入循环
}else{//用户输入错误进入此结构
System.out.println("用户名和密码不匹配,请重新输入");
key = false;
}
}while(key==false);

}

}

******************************************************************

public class AdministratorTest {


public static void main(String[] args) {
Administrator test = new Administrator();//创建第一个对象
test.name = "admin1";//用户名
test.passWord = "111111";//密码
test.show();
Administrator test2 = new Administrator();//创建第二个对象
test2.name = "admin2";//用户名
test2.passWord = "222222";//密码
test2.show();
System.out.println("*****************************************");
Administrator test3 = new Administrator();//创建第三个对象
test3.getKey();
}

}

posted on 2017-08-16 10:48  我可不是隔壁的老王  阅读(101)  评论(0编辑  收藏  举报