java 面向组件_Java 面向对象

面向对象:

1, 面向过程的思想

准备去一个地方:

先买车, 挂牌, 开导航, 踩油门, 过黄河, 穿越珠穆朗玛峰...

2, 面向对象的思想

我开着车去, 车怎么去随便

所有去这个地方的信息, 全部封装在这个车里面, 我不了解这个车是怎么运行的, 我也不需要了解, 我只知道我能到达这个地方就行了

面向对象的基本思想是, 从现实世界中客观存在的事物出发, 来构造软件系统, 并在系统的构造中尽可能的运用人类的自然思维方式, 面向对象是目前人与计算机沟通最简单的语言思想

合适的方法出现在合适的类里面

3, 什么是类, 什么是对象?

举个栗子(什么是瓶子-->一类事物的抽象-->静态属性,动态属性)

举个栗子(人-->学生-->张三)

对象是类的一种实例化, 对象用"属性"和"方法"来对应描述事物所具有的"静态属性"和"动态属性"

类是用于描述同一类形的对象的一个抽象的概念, 类中定义了这一类对象应该具有的"静态属性"和"动态属性"

类可以看成是一类对象的模板, 对象可以看成该类的一个具体实例

什么是类

学生是类, 瓶子是类, 老师是类

什么是对象

这个学生是对象, 这个瓶子是对象, 这个老师是对象,

符合这类事物的特征的某一个东西, 叫对象

领导-->显示职工的姓名

职工:合适的方法出现在合适的类里(有图有真相)

静态属性:

姓名: 张三

年龄: 24

工资: 3000

动态属性:

显示姓名

显示年龄

修改姓名

领取工资

4, 类与类之间的关系

关联关系(最弱的一种关系)(有图有真相):

不好下一个定义, (A类中某个方法的参数是B类的某一个对象)

举个栗子(学生老师)

老师要讲课, 这是一个方法, 要传个参数进去, 参数是学生对象

*继承关系(避免多重继承)(有图有真相)

什么是一种什么

举个栗子(运动员-->球类运动员-->篮球运动员)

聚合关系(聚集, 组合)(有图有真相)

什么是什么的一部分

举个栗子(球队-->(王队长, 队员))

组合----人: 头, 身体

聚集:构成这个类的这部分可以是这个类的, 也可以是另外一个类的,

组合:每一部分只属于一个类

*实现关系(有图有真相)

接口:只管定义方法, 怎么实现由子类去做

举个栗子(接口(开车的方法), A类可以实现, B类也可以实现)

5, java类的定义, 对象和引用

定义一个类

public class 类名{

成员变量

方法

}

类名 变量名 = new 类名();

变量名....

java: 万物皆对象, 处处皆需求

对象是对属性(成员变量, 静态属性)和方法(函数, 动态属性)的封装

java中提供的类, 程序员自己定义的类

为什么要使用面向对象的思想:

面向对象更容易达到一种境界:

Reusable(重用性), Extensibility(可扩展性)

面向组件(Component)--比对象更高层次的抽象

WebService

成员变量和局部变量的区别

成员变量的初始化(有图有真相)

成员变量可以是java中任意一种数据类型(基础数据类型和引用类型)

什么是引用类型 ?

成员变量可以初始化, 也可以不初始化(java默认初始化)

成员变量的作用范围-->整个类

类和对象的关系

C c1 = new C();

C c2 = new C();// c1, c2在这里是局部变量

7, 构造函数(构造方法)

在使用 new 来创建一个对象的时候就是调用的这个类的一个构造方法(构造函数), 构造方法名与类同名, 并且没有返回值(没有返回值也不要写void)

空参的构造函数和有参数的构造函数

注释, 命名规则!!!!!!!!!!

继承中的构造函数:

--子类的构造方法必须调用父类的构造方法

--super(), 调用父类的构造方法, this()调用本类中另外的构造方法

9, 关键字this, static, package和import语句

this:(this表示当前对象的引用)

--在类的方法定义中使用this关键字代表使用该方法的对象的引用

--当必须指出当前使用方法的对象是谁时要使用this

--有时this可以处理方法中成员变量和参数重名的情况

--this可以看作是一个变量, 它的值是当前对象的引用

static(不在堆里面也不在栈里面, 在数据区(data seg)):

--类名直接 . 出来的变量是静态变量, 每个类里面的静态变量只有一份, 是公用的(赋值后每个实例化的对象都可使用)

--静态方法中不可访问非静态成员

--静态变量和静态方法不需要实例化

package:

便于管理大型软件系统中数目众多的类, 解决类名重名的现象

10, 访问控制, 权限修饰符(public private default protected)

puclic class 类名 {

private 类型 属性1;

private 类型 属性2;

set, get

}

11, 面向对象的三大特性: 封装, 继承, 多态

封装(...)

继承:

子类拥有父类的属性和方法

多态((执行期间)动态绑定, 池绑定)(有图有真相):

重载(overload):

方法名相同, 只有参数类型不同或者参数个数不同, 返回值不同是不能构成重载的

重写(overwrite / override):

将父类的方法重新定义

--在子类中可以根据需要从父类中集成来的方法进行重写

--重写方法必须和被重写的方法具有相同的方法名, 参数列表和返回类型

--重写方法不能使用比被重写方法更严格的访问权限

toString方法的重写

equals方法的重写

12,super, final关键字

super: 指向父类的引用

final的变量值不能改变

final的方法不能被重写

final的类不能被继承

13, 对象转型(casting)

--父类的引用可以指向其子类的对象

--父类的引用不可以访问其子类对象新增的成员(包括属性和方法), 如果硬要访问-->强转

--可以使用instanceof关键字来判断一下这个变量是不是这个类或者是这类的子类

14, 抽象类(方法)

--使用abstract关键字修饰的类(方法)

--含有抽象方法的类必须被声明为抽象类

--抽象类不能被实例化

--抽象方法只需要声明, 不需要被实现

抽象方法:

定义方法, 没有实现

15, 接口(一种特殊的抽象类, 所有的方法是一个抽象方法)

--语法定义:

public interface InterfaceTest{

}

一个类去实现一个接口, 使用implements关键字

public class test implements InterfaceTest{

}

--多个无关的类可以实现同一个接口

--一个类可以实现多个无关的接口

--与继承关系类似, 接口与实现类之间存在多态性

--接口中的属性默认为 public static final 也只能是public static final的

--接口中只能定义没有实现的方法, 默认为 public, 也只能是 public, 接口可以继承其他的接口并添加新的属性和方法(没有实现的)

其配图如下所示:

ae70929806462fae6fa846642d4d217d.png

a197062147c35505f9a9d3338ab5a261.png

9715d372f721ac7dc347900f49fe84af.png

48134a2a1f8be087d6c7e367ab832d84.png

1d22940204d730137599299cadd15771.png

1066db6d3686a1cee50abd9bab7be9cf.png

93484e13d512a8cdcc1788ce333e90b5.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值