面向对象(个人笔记九)

原创 2018年04月15日 19:00:48

面向对象

一、概念

作为开发人员必须熟知并运用的,面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。面向对象的思想已经涉及到软件开发的各个方面。如,面向对象的分析(OOA,Object Oriented Analysis),面向对象的设计(OOD,Object Oriented Design)、以及我们经常说的面向对象的编程实现(OOP,Object Oriented Programming)。

二、面向对象基础

1 类与对象

类:对现实中某些事物的抽象描述, 对象,就是本类事物的一个具体存在

打个不恰当的例子:int x = 90;  // int是类,  x 是对象

// 类中只有两种东西, 字段(属性,成员变量),和方法(函数)
// 例一,设计一个学生类,并使用
class Student{
 int age;  //这个就是属性
 String name; 
 String school;
 void speak() {//行为,方法
 System.out.println("我的名字是: "+name+"我的年龄是: "+age+"我的学校是: "+school);
 }
 void study(){
 System.out.println("学生在学习"); 
 }
 // System.out.println("这句代码放在这将出错"); 错误,类中不能直接写执行语句

}

 class Test

 {
 public static void main(String [] args)
 {
 //用Student这个类,定义了一个对象 stu
 Student stu=new Student();  
 stu=null;
 //操作对象中的属性
 stu.age=23;
 stu.name="张三"; 
 stu.school="内大";
 //调用对象的方法
 stu.speak();
 stu.study();

 }

}

//例二 设计一个Cat(猫)类,并使用
public class Cat {
//猫的属性
String nickName;
int age;
String home;

String owner;

void catchMouse(){
System.out.println("逮到一只小老鼠");
}
void shout(){
System.out.println("喵~~~");
}
void introduce(){
System.out.println("我的名字是:"+nickName);
System.out.println("我的年龄是"+age);
System.out.println("我的家是:"+home);
System.out.println("我的主人:"+owner);

}}

class Test{public static void main(String[] args) {
Cat cat=new Cat();
  /*cat.nickName="咖啡猫";
cat.age=2;
cat.home="赵苗苗家";
cat.owner="赵苗苗"; 
*/
cat.catchMouse();
cat.shout();
cat.introduce();
}}

//例三 设计一个计算器类,能计算加减乘除
public class Calc {
int wdith=20;
int height=30;
String color="灰色"; 
//加
int jia(int a,int b){
return a+b;
}
//减
int jian(int a ,int b ){
return a-b;
}
//展示
void show(){
System.out.println("这是一个超级计算,宽"+wdith +"长" +height+"颜色"+color);
System.out.println("它能计算加法,和减法");
}
}

class Test2{  //the type Test is already defined 这个类型已经被定义了
public static void main(String[] args) {
Calc c=new Calc();
c.show();
int result1=c.jia(888283, 23434); //计算加法
int result2=c.jia(9239923, 1323); //计算减法
System.out.println("加法的结果是:"+result1);
System.out.println("减法的结果是:"+result2);
}
}
  //设计一个银行类,能存钱取钱,能查询余额  
public class Bank {
int 账户余额=0;
void 取钱(int count){
if(账户余额-count<0){
System.out.println("余额不足!");
}
else{
账户余额-=count;
System.out.println("取款成功!当前日期 "+new java.util.Date());
}
}
void 存钱(int count){
账户余额+=count;
System.out.println("存款成功!当前日期 "+new java.util.Date());
}
void 查询余额(){
System.out.println("当前余额:"+账户余额);
}
}
class Test3{
public static void main(String[] args) {
Bank bank=new Bank();
bank.取钱(5000);
bank.存钱(2000);
bank.存钱(5000);
bank.存钱(10000);
bank.取钱(4000);
bank.取钱(9000);
bank.取钱(500000);
}
}


2 对象与内存空间

Student stu=new Student(); 
stu=null 则  new Student(); 出来的实体将变成垃圾
关于初值 new 出来的对象实体,里面的属性会默认初始化
默认初值
int 型 : 0 
boolean : false
char : \u0000
float : 0.0f
doubl : 0.0
引用类型: null 

class Student{
String school;
void eat(){
 String shitang; //变量在使用之前必须赋初值
 System.out.println("学生去"+shitang+"吃饭");  //编译出错,因shitang不是类的属性,它是方法的局部变量
 }
  
 void gotoSchool(){
   System.out.println("学生去"+school +"上学"); //编译不出错,因为school是类的属性,它有默认初值,是null
 }
 }

//例子 对象做为函数参数
class Robot{
void 锄草(){
System.out.println("机器人把草地收拾干净了");
}
}

class Student{
  public static void main(String [] args){
   Robot robot=new Robot();
   干活(robot); //调用函数,并传参
  }
  
  static void 干活(Robot robot){//这个函数,接收的参数类型是  对象类型
 robot.锄草();
  }
}

匿名对象
class Student{
  public static void main(String [] args) {  
 // Robot robot=new Robot();
 // robot.锄草(); 
 new Robot().锄草();  //匿名对象,执行完后,实体马上就变成垃圾了
 //什么情况下用匿名对象?
 //1) 对象的方法或属性只访问一次
 //2) 对象做为函数的参数
    干活(new Robot());  //使用匿名对象做为函数的参数
  }
  
  static void 干活(Robot robot){
 robot.锄草();
  }
}

黑客帝国之八种超级武器

黑客帝国之八种超级武器吴建蓉 01-4-30 上午 09:58:53您是怎样看待黑客及黑客现象的?崇拜?不齿?还是畏惧?本文将向您介绍中国黑客常用的八种武器及其防御方法。需要说明的是,这些只是初级黑客...
  • tchaikov
  • tchaikov
  • 2001-05-07 17:33:00
  • 970

Java_面向对象笔记总结(一)

面向对象 (1):特点  1:将复杂的事情简单化。  2:面向对象将以前的过程中的执行者,变成了指挥者。  3:面向对象这种思想是符合现在人...
  • lwt976647637
  • lwt976647637
  • 2016-07-23 22:30:23
  • 813

Java复习笔记—面向对象

面向对象 特点:1:将复杂的事情简单化。 2:面向对象将程序员从执行者,变成了指挥者。 3:面向对象这种思想是符合现在人们思考习惯的一种思想。   面向对象的过程:其实就是不断创造对象,适用...
  • gk1023
  • gk1023
  • 2015-10-05 20:35:38
  • 488

OOP面向对象——实例——9*9乘法表

实例:Print.java 打印输出9*9乘法表 package 面向对象实例; //import java.util.Scanner; //面向对象的写法:oo(面向对象) //类A不是基本数据...
  • Reserved_person
  • Reserved_person
  • 2016-08-11 23:36:01
  • 270

Java笔记系列(基于马士兵的课堂)(1)-面向对象

小白的第一门语言,笔记详尽,可以参考
  • zy19980116
  • zy19980116
  • 2016-12-15 21:26:00
  • 376

整理Java面向对象编程的笔记

第三章:数据类型和变量 基本数据类型 数据类型 在内存占用字节数 默认值 boolean 占1个字节 flase byte 占1个字节 0 short 占2个字节 0 int 占4个字节 0 lon...
  • laochidao
  • laochidao
  • 2016-09-12 22:45:54
  • 759

机器学习个人笔记完整版v4.7.pdf

  • 2017年11月02日 23:14
  • 11.27MB
  • 下载

Java面向对象笔记(一)

封装:隐藏代码,通过访问控制符。 四类: private:只能被当前类的内部访问,若用于field,则可通过setter和getter来操作field,建议写类时大部分field用此修饰。 不使...
  • hahaha_sxm
  • hahaha_sxm
  • 2015-08-28 23:23:43
  • 422

机器学习个人笔记v4.21(免费)

  • 2016年07月26日 11:02
  • 11.3MB
  • 下载

个人学习笔记(一)

C#中引用和C/C++ 指针的区别C/C++程序员可能习惯性地将引用类型想象成指针,虽然C#的引用类型和指针由许多共同点,但指针提供的功能多得多。例如,在C/C++应用程序中,一个指针可以引用几乎任何...
  • Beyondsofter
  • Beyondsofter
  • 2007-08-13 09:18:00
  • 507
收藏助手
不良信息举报
您举报文章:面向对象(个人笔记九)
举报原因:
原因补充:

(最多只允许输入30个字)