没有合适的资源?快使用搜索试试~ 我知道了~
Java课堂笔记啊 各种经典。。。 Java初学者 围观
资源推荐
资源详情
资源评论
JAVA 的面向对象编程--------课堂笔记
面向对象主要针对面向过程。
面向过程的基本单元是函数。
什么是对象:(万物皆对象)
所有的事物都有两个方面:
有什么(属性):用来描述对象。
能够做什么(方法):告诉外界对象有那些功能。
后者以前者为基础。
大的对象的属性也可以是一个对象。
为什么要使用面向对象:
首先,面向对象符合人类看待事物的一般规律。
对象的方法的实现细节是屏蔽的,只有对象方法的实现者了解细节。
方法的定义非常重要。方法有参数,也可能有返回值。
注意区分:对象(本身)、对象的实现者、对象的调用者。
分析对象主要从方法开始。
我们通过类来看待对象,类是对象的抽象。
其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。
对象之间的耦合性一定要低(比如不同硬盘和不同主板之间的关系)。这样才能使每个对象本身做成最
好的。
对于对象的要求:高内聚、低耦合,这样容易拼装成为一个系统。
实现高内聚就是要最大限度低提高复用性(复用性好是因为高内聚)。
可复用性是 的基础。
比较面向过程的思想和面向对象的思想:
面向过程的思想:由过程、步骤、函数组成,以过程为核心;
面向对象的思想:以对象为中心,先开发类,得到对象,通过对象之间相互通信实现功能。
面向过程是先有算法,后有数据结构。
面向对象是先有数据结构,然后再有算法。
在用面向对象思想开发的过程中,可以复用对象就进行复用,如无法进行复用则开发新的对象。
开发过程是用对个简单的对象的多个简单的方法,来实现复杂的功能。
从语法上来看,一个类是一个新的数据类型。
在面向对象编程中,除了简单数据类型,就是对象类型。
定义类的格式:
代码
达内 java 学习笔记
1
诚信、创新、开放、合作
注意类名中单词的首字母大写。
实例变量:定义在类中但在任何方法之外。( 出来的均有初值)
局部变量:定义在方法之中的变量。
局部变量要先赋值,再进行运算,而实例变量均已经赋初值。这是局部变量和实例变量的一大区别。
实例变量的对象赋值为 。
局部变量不允许范围内定义两个同名变量。实例变量的作用域在本类中完全有效,当被其他的类调用的
时候也可能有效。
实例变量和局部变量允许命名冲突。
书写方法的格式:
修饰符返回值方法名调用过程中方法体
可能出现的例外
!"#$%参数&'$"("
例:
#$%)&
注:方法名中的参数 ) 为局部变量
类方法中的一类特殊方法:构造方法。
构造方法是当用类生成对象时,系统在生成对象的过程中利用的方法。
注意:构造方法在生成对象的时候会被调用,但并不是构造方法生成了对象。
构造方法没有返回值。格式为:方法名。
构造方法的方法名与类名相同。
构造方法是在对象生成的过程中自动调用,不可能利用指令去调用。
在一个对象的生成周期中构造方法只用一次,一旦这个对象生成,那么这个构造方法失效。
用类来生成对象的语句:
*%&。
第一个 表示这是用 类进行定义。“%&”表示调用一个无参数的构造方法。
如果%&中有参数,则系统构造对象的过程中调用有参的方法。
此时 称为一个对象变量。
+ 的存储区域存放的是地址:一个对象在硬盘上占有一个连续地址,首地址赋予 空间。
称为对象 的引用。
注意:在对象变量中存放的是引用(地址);在简单变量中存放的是数值。
可以构造多个构造方法,但多个构造方法的参数表一定不同,参数顺序不同即属于不同的构造方法:
%$,#)&
%)$,#&
为两个不同的构造方法。
如果我们未给系统提供一个构造方法,那么系统会自动提供一个为空的构造方法。
练习:写一个类,定义一个对象,定义两个构造方法:一个有参,一个无参。
(编写一个程序验证对象的传递的值为地址)
注意下面这种形式:
!"',#%&-#./01
达内 java 学习笔记
2
注意生成新的对象与旧对象指向无关,生成新对象生命消亡与旧对象无关。
面向对象方法的重载("!$",)和覆盖("!$$,)。
在有些 22 书籍中将 "!$$, 称为重载,"!$", 称为过载。
!$", 在一个类中可以定义多个同名方法,各个方法的参数表一定不同。但修饰词可能相同,
返回值也可能相同。
在程序的编译过程中根据变量类型来找相应的方法。因此也有人认为"!$", 是编译时的多态,
以后我们还会学到运行时多态。
为什么会存在 "!$", 技术呢?作为应对方法的细节。
利用类型的差异来影响对方法的调用。
吃()可以分为吃肉,吃菜,吃药,在一个类中可以定义多个吃方法。
构造方法也可以实现 "!$",。例:
!"'%&3
!"'%&3
!"'%$,&为三种不同的方法。
!$", 方法是从低向高转。
4—'"$—5"——",—"。
在构造方法中,' 表示本类的其他构造方法:
%&3
%$,&
'%&3 表示调用 %&
如果调用 %&则为 '%&。
特别注意:用 ' 调用其他构造方法时,' 必须为第一条语句,然后才是其他语句。
' 表示当前对象。
!"$#%&
#$*67;
4#-"-$%'-#$&3
此时打印的是实例变量,而非局部变量,即定义在类中而非方法中的变量。
'-#$ 表示实例变量。
谁调用 '-#$ 那么谁即为当前%'&对象的 #$ 方法。
封装:使对象的属性尽可能私有,对象的方法尽可能的公开。用 $! 表示此成员属性为该类的私有
属性。
表示该属性(方法)公开;
$! 表示该属性(方法)为只有本类内部可以访问(类内部可见)。
(想用 $! 还要用 和 , 方法供其他方法调用,这样可以保证对属性的访问方式统一,并且便于
维护访问权限以及属性数据合法性)
达内 java 学习笔记
3
如果没有特殊情况,属性一定私有,方法该公开的公开。
如果不指明谁调用方法,则默认为 '。
区分实例变量和局部变量时一定要写 '。
88-9:
继承:
父类($)和子类(")。
父类的非私有化属性和方法可以默认继承到子类。
"(;'$
而如果父类中的私有方法被子类调用的话,则编译报错。
父类的构造方法子类不可以继承,更不存在覆盖的问题。(非构造方法可以)
如果子类访问父类的构造方法,则在编译的时候提示访问不到该方法。
22 中不允许多继承,一个类有且只有一个父类(单继承)。
22 的数据结构为树型结构,而非网状。(22 通过接口和内部类实现多继承)
方法的覆盖("!$$,)
方法的重载并不一定是在一个类中:子类可以从父类继承一个方法,也可以定义一个同名异参的方法,
也称为 "!$",。
当子类从父类继承一个无参方法,而又定义了一个同样的无参方法,则子类新写的方法覆盖父类的方法,
称为覆盖。(注意返回值类型也必须相同,否则编译出错。)
如果方法不同,则成重载。
对于方法的修饰词,子类方法要比父类的方法范围更加的宽泛。
父类为 ,那么子类为 $! 则出现错误。
之所以构造方法先运行父类再运行子类是因为构造方法是无法覆盖的。
以下范围依次由严到宽:
$!:本类访问;
5:表示默认,不仅本类访问,而且是同包可见。
$":同包可见<不同包的子类可见
:表示所有的地方均可见。
当构造一个对象的时候,系统先构造父类对象,再构造子类对象。
构造一个对象的顺序:(注意:构造父类对象的时候也是这几步)
1 递归地构造父类对象;
2 顺序地调用本类成员属性赋初值语句;
3 本类的构造方法。
$%&表示调用父类的构造方法。
$%&也和 ' 一样必须放在第一行。
'%&用于调用本类的构造方法。
如果没有定义构造方法,那么就会调用父类的无参构造方法,即 $%&。
要养成良好的编程习惯:就是要加上默认的父类无参的构造方法。
思考:可是如果我们没有定义无参的构造方法,而在程序中构造了有参的构造方法,那么如果方法中没
有参数,那么系统还会调用有参的构造方法么?应该不会。
达内 java 学习笔记
4
多态:多态指的是编译时类型变化,而运行时类型不变。
多态分两种:
1 编译时多态:编译时动态重载;
2 运行时多态:指一个对象可以具有多个类型。
对象是客观的,人对对象的认识是主观的。
例:
Animal a=new Dog();查看格式名称;
Dog d=(Dog)a。声明父类来引用子类。
(思考上面的格式)
运行时多态的三原则:(应用时为覆盖)
1、 对象不变;(改变的是主观认识)
2、 对于对象的调用只能限于编译时类型的方法,如调用运行时类型方法报错。
在上面的例子中:Animal a=new Dog() ; 对象 a 的编译 时类型为 Animal,运行时类型为
dog。
注意:编译时类型一定要为运行时类型的父类(或者同类型)。
对于语句:Dog d=(Dog)a。将 d 强制声明为 a 类型,此时 d 为 Dog(),此时 d 就可以调用运行时
类型。注意:a 和 d 指向同一对象。
=、 在程序的运行时,动态类型判定。运行时调用运行时类型,即它调用覆盖后的方法。
关系运算符:"5
"52#3%这个式子的结果是一个布尔表达式&
为对象变量,2# 是类名。
上面语句是判定 是否可以贴 2# 标签。如果可以贴则返回 $,否则返回 5。
在上面的题目中:"52# 返回•$,
"5>", 也返回•$,
"5 用于判定是否将前面的对象变量赋值后边的类名。
"5 一般用于在强制类型转换之前判定变量是否可以强制转换。
如果 2#*2#%&;
>",*>",%&3
此时编译无误,但运行则会报错。
2#*>",%&相当于下面语句的功能:
2#*,2#%&;
2#-,2#3
$>",%&;
封装、继承、多态为面向对象的三大基石(特性)。
运行时的动态类型判定针对的是方法。运行程序访问的属性仍为编译时属性。
!$", 针对的是编译时类型,不存在运行时的多态。
习题:建立一个 ' 类,有 $ 和 $ 子类。
达内 java 学习笔记
5
剩余31页未读,继续阅读
资源评论
ian003
- 粉丝: 0
- 资源: 27
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功