Java面向对象(上)

构造器用于对类实例进行初始化操作,构造器支持重载,如果多个重载的构造器里包含了相同的初始化代码,则可以把这些初始化代码放置在普通初始化块里完成,初始化块总在构造器执行之前被调用。初次之外,Java还提供了一种静态初始化块,静态初始化块用于初始化类,在类初始化阶段被执行。

类(class)和对象(object,也被称为实例,instance),其中类是某一批对象的抽象,可以把类理解成某种概念;对象才是一个具体存在的实体,从这个意义上来看,日常所说的人,其实都是人的实例,而不是人类。

Java语言里定义类的简单语法如下:

[修饰符] class 类名{
    零到多个构造器定义
    零到多个成员变量
    零到多个方法
}

Java类名必须是由一个或多个有意义的单词连缀而成的,每个单词首字母大写,其他字母全部小写,单词与单词之间不要使用任何分隔符。

成员变量用于定义该类或该类的实例所包含的状态数据;

方法则用于定义该类或该类实例的行为特征或者功能实现;

构造器用于构造构造该类的实例,Java语言通过new关键字来调用构造器,从而返回该类的实例。 构造器是一个类创建对象的根本途径,如果一个类没有构造器,这个类通常无法创建实例。因此,Java语言提供了一个功能:如果程序员没有为一个类编写构造器,则系统会为该类提供一个默认的构造器。一但程序员为一个类提供了构造器,系统将不再为该类提供构造器。

static修饰的成员表明它属于这个类本身,而不属于该类的单个实例,因为通常把static修饰的成员变量和方法也称为类变量、类方法。不使用static修饰的普通方法、成员变量则属于该类的单个实例,而不属于该类。

因此通常把不使用static修饰的成员变量和方法也称为实例变量、实例方法。

方法在逻辑上要么属于类,要么属于对象。 

方法重载

Java允许同一个类里定义多个同名方法,只要形参列表不同就行了。如果同一个类中包含了两个或两个以上的方法名相同,但参数列表不同,则被称为方法重载。

方法重载的要求就是两同一不同:同一个类中方法名相同,参数列表不同。至于方法的其他部分,如返回值类型,修饰符等,与方法重载没有任何关系。

成员变量和局部变量

成员变量指的是在类里定义的变量;局部变量指的是在方法里定义的变量。

类的继承

Java子类不能获得父类的构造器。

重载主要发生在同一个类的多个同名方法之间,而重写发生在子类和父类的同名方法之间。

super限定

如果需要在子类方法中调用父类被覆盖的实例方法,则可使用super限定来调用父类被覆盖的实例方法。

super是Java提供的一个关键字,super用于限定该对象调用它从父类继承得到的实例变量或方法。正如this不能出现在static修饰的方法中一样,super也不能出现在static修饰的方法中,static修饰的方法是属于类的,该方法的调用者可能是一个类,而不是对象,因而super限定也就失去了意义。

子类不会获得父类的构造器,但子类构造器可以调用父类构造器的初始化代码。

在一个构造器中调用另一个重载的构造器使用this调用来完成,在子类构造器中调用父类构造器使用super调用来完成。 

多态性

Java引用变量有两种类型:一个是编译时类型,一个是运行时类型。

编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。

如果编译时类型和运行时类型不一致,就可能出现所谓的多态(Polymorphism)

子类是一种特殊的父类,因此Java允许把一个子类对象直接赋给一个父类引用变量,无需任何类型转换,或者被称为向上转型(upcasting),向上转型由系统自动完成。

继承要表达的是一种“是(is-a)”的关系,而组合表达的是“有(has-a)”的关系。

普通初始化块负责对对象执行初始化,类初始化块则负责对类进行初始化。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值