java 第三次课—对象、类、包和接口

第3章
对象、类、包和接口

  面向对象的概念
所谓面向对象的方法学,就是使我们分析、设计和实现一个系统的方法尽可能地接近我们认识一个系统的方法。包括:
 面向对象的分析(OOA, Object-Oriented Analysis)
 面向对象的设计(OOD, Object-Oriented Design)
 面向对象的程序设计(OOPL, Object-Oriented Program)
面向对象技术主要围绕以下几个概念:
 对象、抽象数据类型、类、类型层次(子类)、继承性、多态性。

  下面介绍基本概念
1 对象 Object
2 类 Class
3 实例 Instance
4 接口 Interface
5 类型 Type
6 引用 Reference
7 包 Package
8 封装 Encapsulation
9 继承 Inharitance
10多态 Polymorphism

 

1 对象
     所有东西都是对象。可将对象想象成一种新型变量;它保存着数据,但可要求它对自身进行操作。每个对象都有自己的存储空间,可容纳其他对象。每个对象都有一种类型。

同一类所有对象都能接收相同的消息。

    将对象进行抽象变成程序的“类”是编制程序的首要任务,同时也是程序设计优劣的关键。
class Person
{
    int age;
    ……
  
    void work() { … }
    ……

2 类(class):抽象的集合概念     
   系统类库中已定义好的类,用户也可以自定义的类。

   类里面有属性,方法
    属性:状态,静态特性的描述。
    方法:行为,动态特性的描述。


   类的构造方法
构造方法的名字与类名相同。创建对象时自动调用对对象进行初始化操作。
构造方法前面没有返回类型定义,它没有返回值,也不是void。[不能return]
构造方法可以重载[多个构造方法但参数不同],可以继承[子类创建时先调用父类的,再调用自己的]。
JAVA每个类都至少有一个构造方法[系统默认无参数构造方法];一旦定义了构造方法,系统不再提供默认的[只有定义了有参数的,都需要再定义一个无参数的]。
你必须拥有一个合适的类才能创建一个合适的对象,有了合适的对象才能完成合适的工作。
类名 对象变量=new 类名([参数]);
  类名 对象变量;
  对象变量= new 类名([参数]);
对象的引用:
  对象名.成员变量名
  对象名.方法名([参数])

3 将类实例化之后就得到了实例(Instance)
class Person
{
  int age;
}
public class ObjtoObj
{
  public static void main(String[] args)
  {
     Person p1=new Person();//得到实例
     Person p2=new Person();
     p1.age=20;
     p2.age=30;
     System.out.println("p1.age:"+p1.age+" p2.age:"+p2.age);
     p1=p2;
     System.out.println("p1.age:"+p1.age+" p2.age:"+p2.age);
     p1.age=25;
     System.out.println("p1.age:"+p1.age+" p2.age:"+p2.age);
   }
}

4 接口  (后面详细说明)

 Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有

不同的行为(功能)。

5 类型 Type   略

6 引用 Reference  略

7 包

包的定义: package 包名;
位置: 程序的第一条语句
存放: Sun建议Internet域名倒置
编译: 使用javac –d . xxx.java
包的引用: import 包名.[类名|*];
位置: package语句[若有]和类定义之间
默认: 系统自动引入java.lang包[import java.lang.*]
路径: classpath:做为特殊的根目录使用,从这里展开对.class文件的搜索 。


package A;
public class Hello
{
public static void main(String args[])
{
System.out.println("Hello World!");
}
}

D:/Java>javac Hello.java 此程序可以编译通过.接着执行。
D:/Java>java Hello 但是执行时,却提示错误!

原因是我们把生成的Hello.class规定打包在D:/Java/A文件中,必须在A文件中才能去运行。所以应该在D:/Java目录下建立一个A目录,然后把把Hello.class放在它下面,执行时

,可正常通过!
D:/Java/>java A.hello 就会输出:Hello world!


现在介绍Java的import机制

我们在D:/Java目录下建立一个Tesy.java文件,其内容如下:
import A.Hello;
public class Test{
public static void main(String[] args){
Hello Hello1=new Hello();
}
}

D:/Java/>javac Test.java 编译成功!

D:/Java/>java Test运行成功!

 

8 封装
  将信息隐蔽的过程称为封装。
  封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。

  至少有两方面的原因促使我们控制对成员的访问。
防止程序员接触他们不该接触的东西。若只是为了解决特定的问题,只需操作接口即可。
允许系统人员修改内部结构,不用担心它会对程序员造成什么影响。

强内聚  弱耦合

Java提供4种访问权限: public,protected,private和friendly.

9 继承
    继承:现实世界中遗传关系的直接模拟, 它表示类之间的内在联系以及对属性和操作的共享。

    面向对象语言允许从一个已有的类[父类]定义新的类[子类],从而形成继承关系。

    子类继承了父类的属性,子类也可继承了父类的方法; 子类并不限于继承,还可以发扬光大;继承未必只有一层。

继承机制的意义
简化类或对象之间的接口
支持软件重用[代码重用]

Java使用关键字extends定义继承[不支持多重继承]
    extends表明要构建的新类是从一个现有类衍生的,现有类称为父类、超类、基类;而新类称为子类、派生类。

class Person
{
    int age;
    ……
  
    void study() {…}
    void work() {…}
    ……

class Girl extends Person
{
    double moneyForDressing
    ……
  
    void shy() {…}
    ……

10 多态
    多态性: “多种形态”,是允许一个接口被多个同类动作使用的特性。[希腊语]
    多态用来模拟物件的对环境的适应能力的!就相当于人的多面性,对不同的人就呈现出不同的一面。

同名方法的覆盖(override)和重载(overload)是多态两种完全不同的机制。
替代原则(substitution principle):父类可以用其子类代换。[替代过程也是子类向上转型的过程,向上转型是一种常用的安全的类型转换]。通过向上转型可实现多态性。

多态 override
覆盖的方法的标志必须要和被覆盖的方法的完全匹配,才能达到覆盖的效果;
覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;
被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。

class A
{
    ……
    void gg() {…}
    void mm(int num) {…}
    ……

class B extends A
{
    ……
   void gg() {…}
   void mm(int num){…}
    ……


多态 overload
方法的重载:即多个方法用相同的名称,但参数行不同(不同的参数类型,不同的参数个数,不同的参数顺序)。[根据不同的参数样式,来选择合适的方法执行]

不能通过访问权限、返回类型、抛出的异常进行重载

多态转换 (cast)
 父类有的子类肯定有,子类有的父类不一定有   向上转换  ==>  子类可以自动转换成父类

上转型对象会失去原对象的一些属性和功能

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值