OOP ⑴
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 ⑴的更多相关文章
- c#面向对象基础技能——学习笔记(二)基于OOP思想研究对象的【属性】
字段(成员变量): 字段只能从对象中访问实例字段,无法直接从类中访问(换言之,不创建实例就不能访问),可以理解为:字段一般用在内部数据交互使用,当需要为外部提供数据时,(要优先使用自动实现的属性而不是 ...
- 一个简单oop的changeTab
好多地方都会用到这样一个效果“点击tab切换内容页”,根据自己的想法实现了一下,写了个简单的插件.以前写代码都是标准的函数式编程,现在觉得面向对象编程看起来比较爽,并且更容易维护,于是就用oop的思想 ...
- Python OOP(面向对象编程)
一OOP的作用 在Python中,类是面向对象设计(OOP)的主要工具.通过使用类这种工具,OOP可以: 1.分解代码,最小化代码的冗余. 2.通过定制现有的代码,来编写新的程序,而不用在原处进行修改 ...
- OOP,WEB开发实用小技巧
偶然读到一篇博客,记录一下心得.这种设计对于新手来说一般是想不到的,它充分的发挥了OOP语言的特性,让代码专用而清爽.这是不是重构的思想呢? 我们在写业务层的时候,有很多方法是重复功能的,我们就可以使 ...
- 从OOP的角度看Golang
资料来源 https://github.com/luciotato/golang-notes/blob/master/OOP.md?hmsr=toutiao.io&utm_medium=tou ...
- 玩转JavaScript OOP[2]——类的实现
概述 当我们在谈论面向对象编程时,我们在谈论什么?我们首先谈论的是一些概念:对象.类.封装.继承.多态.对象和类是面向对象的基础,封装.继承和多态是面向对象编程的三大特性. JavaScript提供了 ...
- Atitit 面向对象编程(OOP)、面向组件编程(COP)、面向方面编程(AOP)和面向服务编程(SOP)的区别和联系
Atitit 面向对象编程(OOP).面向组件编程(COP).面向方面编程(AOP)和面向服务编程(SOP)的区别和联系 1. 面向组件编程(COP) 所以,组件比起对象来的进步就在于通用的规范的引入 ...
- iOS - 对OOA、OOD、OOP的理解
很多人在求职的时候,会遇到一个这样的问题:“对OOD/OOP有较深的理解”,这个时候有人就会问OOD.OOP是什么呢?那么今天咱们就一块来看一下OOA.OOD.OOP到底是什么! (一)OOA--面向 ...
- OOP感悟
行内讲的最多的就是出来一年内基本靠copy,一年后才基本懂得如何去写代码,而理解领悟oop,需要的时间却不定. 我工作中,我发现很多人拿着面向对相当的语言作者做着面向过程的事情,不需要知其所以然,只要 ...
- 初识JAVA之OOP
有一段时间没发博客了,每次手打还是很累,但感觉很充实.. 最近发现很多初学者到了面向对象编程这个知识点时,不太清楚类是如何转化成为对象的,很是困扰,今天我在这里谈谈我的理解,大家一起来研究学习... ...
随机推荐
- vscode下ts-node传入cli参数
ts-node写ts,启动时习惯在package.json里写 "scripts": { "build-ts": "tsc", " ...
- sublime编辑器
1.完全卸载sublime的方法. 打开preferences->browse packages 这个包,打开的那个目录,然后删除完整的sublime Text3目录就行. 2.sublime的 ...
- 雷林鹏分享:查看 XML 文件
查看 XML 文件 在所有主流的浏览器中,均能够查看原始的 XML 文件. 不要指望 XML 文件会直接显示为 HTML 页面. 查看 XML 文件 - Tove Jani Reminder Don' ...
- 安卓音、视频播放功能简单实现 --Android基础
1.音乐播放功能 关键代码: MainActivity.java: package thonlon.example.cn.musicdemowithoutservice; import android ...
- Docker 镜像上传到docker hub仓库
1 先创建docker hub 帐号 ,并创建仓库 https://hub.docker.com/ 首先你需要一个docker hub 帐号,记住username,password,email .后面 ...
- array_column的作用
从记录集中取出 last_name 列,用相应的 "id" 列作为键值: <?php // 表示由数据库返回的可能记录集的数组 $a = array( array( 'id' ...
- java中堆与栈的区别
堆与栈都是java中常用的存储结构,是内存中存放数据的地方. 堆:主要存放运行时创建(new)的对象.主要用于储存对象,存取速度慢,可以运行时动态分配内存,生命周期不需要提前确定. 栈:主要存放基础类 ...
- python 小练习 8
砝码问题1有一组砝码,重量互不相等,分别为m1.m2.m3……mn:它们可取的最大数量分别为x1.x2.x3……xn. 现要用这些砝码去称物体的重量,问能称出多少种不同的重量. 现在给你两个正整数列表 ...
- 【LeetCode】数独
判断一个数独是否合法,未填的空格用字符 ' . ' 表示.该数独有解并不是必要的. e.g. 如图合法数独,输入 ["53..7....","6..195..." ...
- python assert使用说明
python assert断言的作用 python assert断言是声明其布尔值必须为真的判定,如果发生异常就说明表达示为假. assert断言语句的语法格式 判断a与1.b是否一致,msg类似备注 ...