Java程序设计——面向对象编程部分

Java 程序设计——面向对象编程部分

作者: zccst

 

Java 编程,淋漓尽致地体现了面向对象编程的精华。     —— zccst

 

前面的话

曾经有一段时间,很排斥 Java 。认为做 Java 的人水平和能力等都比较低,那绝对是一种鄙夷的态度。但是,在公司项目的迫压下,我开始了 Java 之旅。由于具备良好的 C++ 基础,所以差不多几天时间就上手了。是在后来才发现, Java 远非我想象的那么简单。我闯进了一片新的天空,很舒服。也是在这几天里,我深刻地体会到“机器是最好的老师”这句话的涵义(大学时候没做到)。终于可以力所能及,甚至游刃有余,我想,这大概是我从新手或菜鸟晋级的最好方式吧! O( _ )O 哈哈 ~

 

 

Java 语言程序设计》学习框架

Java 概述             Java 由来、演化、分流;开发工具、平台搭建;特点、前景

Java 结构化编程       关键字、标识符、基本数据类型、运算符、表达式、流程控制;数组

Java 面向对象编程     类和对象; 封装性、继承性、多态性;抽象类;最终类;接口

Java 常用类库         lang applet awt io net util

Java 异常处理        

 

本文重点讲解的就是: Java 面向对象编程部分。(已用黑体字)

由于从大三开始接触 C++ ,面向对象的基础知识还算可以,所以本文略去 Java 中与 C++ 相同的部分。惭愧的是,近几年来没多大进展。

 

类和对象

类、对象、构造函数 (constructor) 、垃圾自动回收机制的定义和使用。还有默认初始化。

构造函数,是用来对新创建对象进行初始化的。除与类名同、没有任何返回值外,在语法结构上与一般的方法相同。

构造函数实例化一个类对象格式:类名 对象名 = new 构造函数(实际参数)

a, new 为对象分配空间

b, 执行构造方法为对象进行初始化

Java 没有析构,但提供了一个类似的方法: protected finalize(); 另外还有方法 : System.gc()

 

Java 程序由类组成,一个程序至少要包含一个类。 Java 程序员的任务就是设计出这样的类来解决实际问题。

 

程序运行时的内存占用

代码区     存放程序的代码部分

数据区     存放程序的全局数据和静态数据

堆区       存放程序动态申请的数据(比如: new

栈区       存放程序的局部数据和参数

Person p1 = new Person(“Jack”,”Male”,23);

Person p2 = p1;

Person p3 = new Person(“Jack”,”Male”,23);

p1 p2 指向同一个对象; p1 p3 指向不同的对象。

 

类的静态属性和静态方法

class 中定义的变量 分为类变量(静态变量)和实例变量;方法 分为类方法(静态方法)和实例方法。都用 static 修饰。弄清楚的最好办法是实践。

类变量和类方法由该类产生的所有实例共享。调用方式:类名 / 对象名 . 静态变量 ( 静态方法 )

注: static 方法中不能处理非 static 的域或方法。

 

 

面向对象的三大特征:封装性、继承性、多态性。

public 公共类:封装 。控制用户对类修改和访问数据的程度。

其对于关系,可以用一个图表清楚的表示:

 


public 公共类:继承和派生

extends 一套规则   this super

/*super.name = name;

super.sex = sex;

super.age = age;  */

就这段代码,曾花了两个小时,每次看到,都会想到那天下午。

 

public 公共类:多态——重载和覆盖

1 ,静态多态性:编译时,重载 (overload)  函数同名,参数列表不同

一般函数重载, Java 类库中的类也有很多重载的方法,比如 println();

构造函数重载   TestPerson2.java

 

2 ,动态多态性:运行时,覆盖 (override)  子类对父类的方法覆盖

TestPerson1.java

null this super 三个域。 this, super 区别见申雪萍课件—— this 引用与 super 引用的对比

 

 

abstract 抽象类:抽象类和抽象方法

抽象类是不能实例化的。只能被继承。

抽象方法是没有方法体的,以“;”介绍。例, abstract public double area();

抽象类至少有一个抽象方法,反过来一个类有抽象方法,则这个类必须声明为抽象类。

 

最终类和最终方法

final 类中的方法可以不声明为 final 方法,但实际上 final 类中的方法都是隐式 final 方法。

final 修饰的方法不一定要存在于 final 类中。

如果一个变量用 final 修饰,表明它在程序中是不能修改的常量。

final 修饰的方法既不能覆盖,也不能被重载,它是一个最终方法,其定义永远不能改变。

final 对象重新赋值会产生编译错误,但是对 final 对象中的变量赋值是可以的。

 

接口( interface :用来实现类间多重继承功能的结构

每一个方法都是抽象的,没有方法体,只有名字和参数表。行为留给实现该接口的类完成。

每一个变量都是静态的常量,都必须赋值。

(所以方法默认是 public abstract ,所有变量都默认是 public static final 。)

 

第一步:用关键字 interface 定义接口:

[public] [interface] 接口名称 [extends 父接口名列表 ]  # 继承的也是接口

{

// 静态常量

[public] [static] [final] 数据类型 变量名 = 常量名 ;

// 抽象方法

[public] [abstract] [native] 返回值类型 方法名(参数列表) ;

}

 

接口可以继承,也可以多重继承,例如:

interface IA{…}

interface IB{…}

interface IC{…}

interface ID{…} extends IA, IB, IC{…}

 

第二步:用关键字 implements 实现接口:

[ 修饰符 ] class 类名 [extends 父类名 ] [implements 接口 A ,接口 B …]

{

类的成员变量和成员方法 ;

为接口 A 中的所有方法编写方法体,实现接口 A;

为接口 B 中的所有方法编写方法体,实现接口 B;

……

}

例如:

[ 修饰符 ] class A implements IA{…}               # class A 要实现接口 IA 中的所有接口方法。

[ 修饰符 ] class B extends A implements IB, IC{…}    # class B 要实现 IB, IC 中的所有接口方法。

注:如果哪怕只有一个接口方法没有实现,则那个类也要声明称抽象的。

 

通过接口可以在运行时动态定位类所调用的方法。接口与重载、覆盖一样,是多态性的体现。

接口的好处是把方法描述与方法功能的实现分开考虑,降低了程序的复杂性,使程序设计灵活,便于扩充修改。

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值