类、对象、包

OO: object-oriented 这是一种思想;

1、OO:万物皆对象,对象因关注而产生; 对象即东西; 人、物、实体均是对象;
结构化编程:程序用流程图,自顶向下的按照一定步骤来设计,将大问题分解为小任务;
围绕要解决的任务来设计,【三问: 做什么事,完成什么东西,最终目标
在电脑面向企业和个人过程中,逐渐增加的使用者和过程中的对象,会不断的更改,造成程序的混乱;
面向对象编程:OOP在1995年开始流行,程序围绕着要解决的问题中的对象来设计【问: 由谁来执行

2、面向对象的设计过程
①建立对象模型,将问题域划分为不同的对象去处理; 【面向对象把过程拿来调用,将认知域扩展到更大的世界,而在更大的世界解决问题的过程是一个面向过程的思考过程;
②首先在模型中建立对象,【问题域中的人、事务、实体抽取为对象, 对象抽取出类】;
③编写类,用类来描述对象身上共有的属性和行为; 属性:对象身上的值数据【可以量化的名词】 和 行为:对象可以做什么【动词】;
解释:类和对象关系:类是对象的抽象,对象是类的实例; 类的对象可以成为一个类进一步实例对象 :具有相同属性和行为的对象的类型;】
④代码书写:class; 类型一定是一个名词;
属性: 数据分为(变量和常量),变量语法(public String name;属性定义的变量在整个类中间都可以用,范围不一样;属性变量相对局部变量而言可以多一个访问修饰符),
访问修饰符+数据类型+成员变量名称;
常量语法:public final String CLASS_NUM = "J132"
方法:语法: public void study( ){
System.out.println("Good Good Study, Day Day Up!"); }
访问修饰符+返回值+方法名称+参数列表;
⑤用NEW实例化类产生对象: 在main()方法中使用, Student stu = new Student();实例化一个类,并且为引用数据类型; 调用的参数和方法stu.name = "张三"; 想NEW多少对象就可以new多少对象;这个类成为实例化对象的模板,对象的空间在new出来一个对象的时候才开始分配一个内存空间【引用类型存储的是引用地址】;
方法必须与对象想关联: stu.XX()方法;
特殊情况: String stu = new String("hello,world!") 可以不new用String str="hello,world!";

3、访问对象的属性和方法?
①,把自身的成员变量(属性)设置为private,不能被直接访问和修改,外部操作则提供一个外部的公共访问和修改器;(get set change 访问,设置,修改);在调用的类中实现改变,但出了这个类就不成立了! 常量为public 方法根据情况而定,
②JavaBean 做了SET get的标准书写规范,必须为私有属性提供符合命名规范的GET、SET方法;给每一个属性提供一对get/set方法;getName(get+属性名); this. 我的;

public String getName( ){ return name; }
public void setName(String name){ this.name = name; }
③隐式对象,自带的不需要申明的; this.name (我的-->调用方法的对象的;) 在平时的大部分时候this可以省掉,在出现形参和成员变量冲突的时候必须使用this. 来操作了;【建议: 凡是在使用本类的属性和方法时(成员变量)的时候无条件使用this. 便于联想和阅读,联想到含义和便于知道其为属性;】
快速生成get、set方法:右键 source Generate Getters and Setters。。。。 将最下面的方法 get set 选上,第二个选项删除; 遇到IS方法,将其改回get方法;
④值传递机制,类通过值得复制来传递值,常用数据类型拷贝数值,引用数据类型【数组、类】拷贝引用; 拷贝值可以改变,而拷贝引用内容可以被改变;


4、面向对象特征:封装、继承、多态、抽象;
封装含义 ①类的组装(确定有哪些类,类有哪些方法,属性;) ②信息隐藏(用,看,操作是否给--->1、访问修饰符 2、方法的实现,不知道方法实现过程;)
信息隐藏:可以隐藏一部分,也可以带条件隐藏; stu.setAge( stu.getAge() + 20 );将访问到的年龄增加20岁;
Private School sch; // 定义一个学校属性;
打印stu方法中的学校属性的那么属性:Syso( stu.getMySchool( ).getName( ) );
修改STU方法中学校属性下的名字属性: stu.getMySchool().setName(); 并且在这之前注意对该对象的实例化( 一般在定义属性中对其进行初始化:private School MySchool = new School( );)

5、 向类中添加方法
1、声明一个类;
2、访问修饰符:public private;
3、返回类型
4、访问标识符
5、小括号(形参);
6、方法的显示部分{方法体}
总结:不能用类来直接工作,要通过对象来工作,对象才是真正的具体存在;产生对象的过程:Employee e; e = new Employee; 类名首字母大写

6、对象的销毁:GC(垃圾回收机制)来回收 没有任何引用的对象主动通知垃圾回收机制收回一个对象,只需要: 对象=null;
Scanner input = new Scanner(System.in);
input = null ; 赋值为空,垃圾回收器必然回收;
匿名对象: new Student( ).setName( "匿名对象" ) ;
对GC只有一种指控命令通知 回收( System.gc( ); ),什么时候收怎么收,回收谁,不能控制,他是独立的一条线程;

7、使用包来组织类:一篇JAVA文件只需要写一个类; 在项目开发中,我们通常会编写数目众多的类。如果不对这些类进行分门别类的使用和存放,就像我们不使用文件夹去管理众多的文件一样,在使用
两个包:com.lavo.test (主方法做测试) ; com.lovo.bean(类方法;)
测试调用类方法需要使用,com.lovo.bean.Student;
简单方法:import com.lovo.bean.Student; 避免使用的类与SUN公司的类名相同;遇到相同的时候,在使用的地方使用全名方法;
JAVA lang 包当中的类,自动加载import,无需指示; String、System



OO 设计原则?
1、开闭原则:软件对扩展是开放的,对修改是关闭的;



细节点: 类: 在一个类中,不加Public 可以再建一个类/加public则类名要与文件名相同;之后再JAVA中只有两个文件,但是在class中有三个文件;
属性: 属性拥有访问修饰符,局部变量和常量是没有的;通过对象.属性名就可以访问;
属性中的成员变量可以不赋初值,因为产生对象的时候回自动初始化,基本数据类型属性赋值为0,引用数据类型赋值为null(空);

Ctrl+Z:返回
Ctrl+X:剪切
Ctrl+C:复制
Ctrl+V:粘贴
Ctrl+S:保存
Ctrl+F:查找

空指针异常:java.lang.Null Pointer Exception;


【案例实战】:设计音像租赁商店。
第一步,找到名词: 影碟、库存号、顾客、手机号、会员号、员工、爆米花、糖果、提成;
不能被现成数据类型表达的:影碟、顾客、员工、商品;
第二步,编程,输入属性,要在外部调用的方法则打出访问和设置方法;
第三步,找动词, 出租(顾客租,顾客还) , 销售 , 【业务行为】;

在Customer类内部使用:
public void rent (Video video){
video.setLendOrNot( true ); 通过实数,将对象中的值进行修改;
video.setCustomer( this ); 通过在本方法中的this将Customer实例化的一个对象创建的对象引用给到Video 实例化的video这个对象的 Customer 成员变量;
}
再在使用的时候用System.out.println(v1.getCustomer().getName()); 打印出来相对应的值;




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值