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();
}

}

OOP ⑴的更多相关文章

  1. c#面向对象基础技能——学习笔记(二)基于OOP思想研究对象的【属性】

    字段(成员变量): 字段只能从对象中访问实例字段,无法直接从类中访问(换言之,不创建实例就不能访问),可以理解为:字段一般用在内部数据交互使用,当需要为外部提供数据时,(要优先使用自动实现的属性而不是 ...

  2. 一个简单oop的changeTab

    好多地方都会用到这样一个效果“点击tab切换内容页”,根据自己的想法实现了一下,写了个简单的插件.以前写代码都是标准的函数式编程,现在觉得面向对象编程看起来比较爽,并且更容易维护,于是就用oop的思想 ...

  3. Python OOP(面向对象编程)

    一OOP的作用 在Python中,类是面向对象设计(OOP)的主要工具.通过使用类这种工具,OOP可以: 1.分解代码,最小化代码的冗余. 2.通过定制现有的代码,来编写新的程序,而不用在原处进行修改 ...

  4. OOP,WEB开发实用小技巧

    偶然读到一篇博客,记录一下心得.这种设计对于新手来说一般是想不到的,它充分的发挥了OOP语言的特性,让代码专用而清爽.这是不是重构的思想呢? 我们在写业务层的时候,有很多方法是重复功能的,我们就可以使 ...

  5. 从OOP的角度看Golang

    资料来源 https://github.com/luciotato/golang-notes/blob/master/OOP.md?hmsr=toutiao.io&utm_medium=tou ...

  6. 玩转JavaScript OOP[2]——类的实现

    概述 当我们在谈论面向对象编程时,我们在谈论什么?我们首先谈论的是一些概念:对象.类.封装.继承.多态.对象和类是面向对象的基础,封装.继承和多态是面向对象编程的三大特性. JavaScript提供了 ...

  7. Atitit 面向对象编程(OOP)、面向组件编程(COP)、面向方面编程(AOP)和面向服务编程(SOP)的区别和联系

    Atitit 面向对象编程(OOP).面向组件编程(COP).面向方面编程(AOP)和面向服务编程(SOP)的区别和联系 1. 面向组件编程(COP) 所以,组件比起对象来的进步就在于通用的规范的引入 ...

  8. iOS - 对OOA、OOD、OOP的理解

    很多人在求职的时候,会遇到一个这样的问题:“对OOD/OOP有较深的理解”,这个时候有人就会问OOD.OOP是什么呢?那么今天咱们就一块来看一下OOA.OOD.OOP到底是什么! (一)OOA--面向 ...

  9. OOP感悟

    行内讲的最多的就是出来一年内基本靠copy,一年后才基本懂得如何去写代码,而理解领悟oop,需要的时间却不定. 我工作中,我发现很多人拿着面向对相当的语言作者做着面向过程的事情,不需要知其所以然,只要 ...

  10. 初识JAVA之OOP

    有一段时间没发博客了,每次手打还是很累,但感觉很充实.. 最近发现很多初学者到了面向对象编程这个知识点时,不太清楚类是如何转化成为对象的,很是困扰,今天我在这里谈谈我的理解,大家一起来研究学习... ...

随机推荐

  1. include

    1. 自己写的文件都用:include "....." 2. 如果A类include了B,那么在主函数中,只用include A类,就可以使用B类了,但是此时不能再include ...

  2. Codeforces 1071 C - Triple Flips

    C - Triple Flips 思路: 小范围暴力 大范围递归构造 构造方法: solve(l, r) 表示使l 到 r 区间全变为0的方法 为了使反转次数小于等于n/3 + 12 我们只需要保证每 ...

  3. Asp.net core 学习笔记 ( DI 依赖注入 )

    比起 Angular 的依赖注入, core 的相对简单许多, 容易明白 所有 provider 都在 startup 里配置. public void ConfigureServices(IServ ...

  4. Polygenic score

    We estimate the maximum prediction accuracy for the risk of Alzheimer's disease based on disease pre ...

  5. Tomcat ----> 学习笔记

    源码之几个常见类和接口的关系 在学习Servlet的时候经常见到以下几个合成单词和非合成单词:Servlet.GenericServlet.HttpServlet.它们之间有联系的.接下来我把它们的联 ...

  6. Mac必备神器之Go2Shell

    一.作用     可以快速在当前目录打开Shell命令行窗口   二.安装 1.打开官网 http://zipzapmac.com/go2shell 2.点击下载并安装   3.点击应用图标   三. ...

  7. Vue.js表单校验;动画指令;避免内存泄露。

    Vue.js表单校验: 动画指令:创建自定义的滚动指令. 避免内存泄露. 避免内存泄露 在单页面应用开发时SPA,用户无需刷新浏览器.所以javascript应用需要自行清理组件来防止内存占用不断增长 ...

  8. 在Java、Web和移动开发方面最值得关注的12大开源框架

    在这篇文章中,我将分享一些值得开发者学习的优秀框架,以提高他们在移动开发.Web 开发以及大数据方面的开发技能. 1.AngularJS 这是一个JavaScript框架,我已经把它加入到我的2018 ...

  9. 微擎查询SQL语句常用

    pdo_fetch:根据SQL语句,查询一条记录 array | boolean pdo_fetch($sql, $params = array()); // :uid 是参数的一个点位符,没有使用引 ...

  10. 【洛谷p1319】压缩技术

    (许久不见,甚是想念) 压缩技术[传送门] 洛谷上滴算法标签: 然而这是一道入门难度的题.(不管不管,就写它了) 好的先说一下思路吧wait!我忘记了咋做的当时. 首先做题第一道坎儿,如何输入若干个( ...