类和对象的学习1

@[TOC] 类和对象

面向对象概述

什么是对象

对象是事物存在的实体。通常将对象划分为两部分,即***动态部分***与***静态部分***
动态部分:对象产生的***行为***,或者***过程***
静态部分:单纯理解为不能动的部分,即***属性***
类:实质上是封装对象属性和行为的载体,而对象则是类抽象出来的一个实例。
通过类创建对象的过程称为实例化,通过对象创建类的过程称为抽象
实例:类抽象出来的对象
实例化:通过类创建对象的过程
抽象:多个对象具有共同特征,抽取共同特征的过程

什么是类

类就是同一事物的统称,是具有相同特性和行为的一类事物,
类是构造对象时所依赖的规范
类是世间事物的抽象描述,而对象是这个事物相对应的实体
类是封装对象属性和行为的载体
在java语言中,类中对象的行为是以方法的形式定义的,对象的属性是以成员变量的形式定义的

面向对象和面向过程

面向对象和面向过程的区别

C语言:完全面向过程

C++语言:一般面向过程,一般面向对象

Java语言:完全面向队形

什么是面向过程的开发方式!

面向过程:注重步骤,注重实现这个功能的步骤。也注重实现功能的因果关系。

例如:第一干什么,第二步干什么,因为有了a所以有b,因为c有d….

面向过程中没有对象的概念,只是实现功能的步骤及因果关系。

面向过程的缺点:

面向过程最主要的是每一步因果关系,环环相扣,若有一环出现错误,则整个程序出现错误,(代码与代码之间的耦合度高,扩展力差)

耦合度就是粘结程度;耦合度高导致扩展力差,耦合度低导致扩展力高。

面向过程的优点:

对于小型项目,采用面向过程的方式进行开发,效率高,不需要前期进行对对象的提取。

面向对象的开发方式:

更符合人类的思维方式,将现实世界分割成不同的单元,然后每一个单元都实现成对象,让各个对象之间协作起来形成一个系统,

采用面向对象的方式进行开发:

耦合度低,扩展力强,

例如:

蛋炒饭:鸡蛋和米饭混在一起,没有独立对象的概念,

无法满足新需求的扩展。

盖饭:鱼香肉丝盖饭,

鱼香肉丝看成一个对象

米饭看成一个对象

两个对象通过动作合成一个对象了

总结:

面向过程:主要注重的是步骤及因果关系

面向对象:对象A对象B对象V 然后abv组合对象。

面向对象

OOA:面向对象分析

OOD:面向对象设计

OOP:面向对象编程

整个面向对象的过程都是采用OO进行贯穿的

实现软件开发的过程

分析à设计à编程

对象存储在堆内存当中,并且对象的实例变量也存储在堆内存中。

面向对象的特点

封装>>>>>>继承>>>>>多态

封装

封装是面向对象编程的核心思想,将对象的属性和行为封装起来,而类就是封装对象属性和行为的载体,类通常对客户隐藏其实现细节,这就是封装的思想。

***作用 ***
采用封装的思想保证了类内部数据结构的完整性/安全性
屏蔽复杂,暴露简单

在这里插入图片描述

继承

类与类之间同同样存在关系,类之间这种关系被称为关联,关联式描述两个类之间的一般二元关系,
例如百货公司类与销售员类。继承是关联的一种。
继承性主要利用特定对象之间的共有属性
子类的实例都是父类的实例,但不可以说父类的实例是子类的实例
一个类处于继承体系中,他即可以是父类也可以是子类,即可以为其他类提供属性和行为,也可以继承父类的属性和方法。

多态

将父类的对象应用到子类的特征就是多态,
多态的实现并不依赖具体类,而是依靠抽象类和接口,
多态性允许统一的风格编写程序,有父类实现,
由抽象方法组成的集合就是接口
程序的标准就是接口

在java语言中,对象的行为是以成员方法的形式存在的,而对象的属性是以成员变量的形式存在的。
类是封装对象行为和属性的载体。

所有的类都是引用数据类型。

类的构造方法

构建对象,完成实例对象的初始化。

类中除了有成员方法之外,还有一个特殊的方法,构造方法,比较特殊的方法,通过方法可以创建对象并进行属性赋值,对实例变量进行初始化
构造方法是一个与类同名的方法,对象的创建就是通过构造方法完成的
构造方法的特点:
1、构造方法没有返回值
2、构造方法的名称要与本类的名称相同。
注意!!!普通的方法值如果没有返回值,需要加关键词void,而构造方法并不需要关键词void来修饰,当类中没有任何构造方法时,类会自动构建一个无参的构造方法,而这个方法称为缺省构造器。。。。。。。。
如果类中有带参的构造方法,,则编译器不会自动创建一个无参的构造方法,当试图调用无参的构造方法时,编译器会出错

语句格式如下:

public book(){
//...构造方法体(通常在构造方法体中给属性赋值,完成属性的初始化)

}
/*
*public :构造方法修饰符
* book:构造方法名
*/

在使用this关键字进行调用方法时,要注意在无参构造方法内调用有参构造方法只可以在***无参构造方法的第一句使用调用有参构造方法***
注意
构造方法名必须和类名一致——————构造方法不需要指定返回值(若增加返回值关键字void则为普通方法)————

调用构造参数

new 构造方法名(实际参数列表)
对于实例变量来说,如果 没有手动赋值,系统会默认赋值初始值、

类的主方法

类的主方法是静态的要在主方法调用其他方法其他方法必须也是静态的

成员变量

在java语言中对象的属性称为成员变量

在JAVA里面的任何变量首先应该要声明,然后再赋值,然后再使用。成员变量和局部变量有一个重要区别:成员变量在类里面声明时如果不进行初始化,那么JAVA会默认给它初始化,而局部变量JAVA不会默认给它初始化,所以在方法里面声明一个局部变量如果不给它初始化时就会出错。默认初始化大多数都是0,boolean类型的为false,引用类型的为null,如过不记得JAVA对成员变量默认的初始化是多少的话,那就这样做,定义一个成员变量,不给它初始化,然后直接打印这个成员变量,打印出来的结果就是JAVA默认的初始化的值。

空指针异常(nul l)

静态变量、方法、常量

由static修饰的变量、常量、方法称为静态变量、常量、方法。
被声明为static的变量。常量、方法为静态成员,静态成员是属于类所有的,可以在本类和其他类名加 “ . ”运算符调用静态成员

如果在执行类时,希望先执类的初始化操作,可以先使用static定义一个静态区域,例如:

public class test{	
	static {
	
	}
}

注意:当这段代码被执行时,首先执行static块中的程序,并且只会执行一次
在静态方法中不可使用this关键字,在静态方法中不可直接调用非静态方法----
注意-----在java语言中规定,不能将方法体内的局部变量声明为static。
在运行类之前想要先进行初始化动作,可以使用static定义一个静态区域,执行代码时 先执行静态区域并只执行一次。

权限修饰符

在java语言中权限修饰符主要包括public、private、protected。

*** private【ˈpraɪvət】私人 :表明该成员变量只可以在该类中使用,无法在子类中使用。并且在其他包的类中也不可见
*** public 公共的
*:除了在本类中使用外,也可以在其它类中的包中及子类使用
protected 【prə’tektɪd】 受保护的:只能在本包的该类和子类中使用,也可以被其他类进行访问。
三者区别:
在这里插入图片描述
当声明类不使用public,protected、private,修饰类设置类的权限,则这个类预设为包存取范围,即只有一个包中的类可以调用这个类中的成员变量和成员方法。

对象的销毁

1)对象引用超过其作用范围,则这个对象将被视为垃圾。
2)将对象赋值null.
垃圾回收机制只能回收由new创建的对象,如果某些对象不是通过new操作符在内存中获取的一块内存,这种对象可能不被回收机制识别,因此,java提供了一个finalize()的方法,用户可以在自己的类中定义这个方法,如果使用该方法,在垃圾回收时首先调用该方法,并且在下一次垃圾回收动作发生时,才能真正回收对象所占内存,
由于垃圾回收机制不受人为控制,并且启动时间也无法确定,所以finalize()方法也就无法执行。因此,java提供了System.gc()方法强制启动垃圾回收器。

对象的创建

new 类名();例如
类型 变量名 = new test();.
java中所有的类都是引用数据类型。

空指针异常为运行错误,编译检查语法问题。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值