JAVA中的类-普通类,嵌套类,抽象类,接口

JAVA中的类

 

1. 基本点

不同于基本类型变量,类作为方法的参数和返回类型时,都是以引用来传递的。这些引用时指向对象的一个实例。

对象数组:类名称 对象数组名称[]

声明变量数组时,一律将中括号放在数组名称的后面!

 

2. 类中类(嵌套类)

2.1在外面定义的类称为外部类,嵌套在里面的类称为内部类,内部类作为外部类的一个成员而存在。在外部类中,可以随意的访问内部类的属性和方法,包括private声明的属性和方法。对于内部类也是一样,外部类完全不受访问权限的限制,可以任意访问它们。

2.2 内部类访问外部类可以直接访问,前面不需要加任何东西;但是外部类访问内部类的属性和方法时,前面需要加上内部对象的名称。这是因为内部类可能有多个,对于外部类来说,需要区分,而对于内部类而言,外部类只有一个,所以就不需要加东西了。

2.3 static 静态方法,当JAVA中的主程序是个静态方法,静态方法是不能够调用任何动态内容的,这时若在主程序所在的类中定义内部类,内部类名前应加static关键字。

2.4 对于外部类中public修饰的属性和方法,从外部可以直接访问到。对于内部类,必须是publc类型的内部类对象中public类型的属性和方法,才能从外部可以直接访问到。即只有公有成员的内部类的公共成员才能直接从外部访问。

 

3. 抽象类

3.1 两个特征

(1)可以包含抽象方法—只有声明没有具体实现的方法

(2)不可以创建对象,只能被其它类继承,或者声明对象变量(多态

3.2 抽象类与普通类的区别

(1)class 关键字前加上了abstract修饰符

(2)访问权限必须是public或者protected,不能是private

(3)包含抽象方法:方法返回值类型前加abstract修饰符

(4)只有方法的声明,没有具体的实现。

(5)继承,继承抽象类的子类本身不是抽象类时,必须实现父类的全部抽象方法(强制性)

3.3 应用场合:多态

为了使方法更加通用,能够适用于所有的子类,方法的参数使用父类类型,这里将父类定义为了抽象类。这么做的好处是简化程序,接口的统一。

抽象类让我们把子类中名称相同但实现不同的方法抽象出来,放到父类当中,使得所有的子类拥有了统一的外部接口,同时它们还可以拥有个性化的实现。

 

4. 接口

4.1 接口中包括了抽象方法和常量。有以下的限制

(1)接口中只能定义常量;

(2)接口中只能定义抽象方法;即每一个方法返回值类型前加abstract修饰符

(3)抽象方法访问权限只能是public,不能是protected, private等。

 

4.2 一个类可以实现多个接口,任何实现接口的普通类都必须实现接口的所有方法。只有抽象类或者接口可以保留未被实现的抽象方法。

 

4.3 接口的多重继承

extends关键字 来扩展接口,接口的继承支持多重继承。

Interface 子接口名称 extends 父接口名称1[, 父接口名称2..]{

}

接口多重继承冲突:

子接口继承的两个父接口出现了值不相同、但名称相同的常量定义

子接口继承的两个父接口出现了方法的名称、参数完全相同,但是返回值类型不同的方法

 

菱形继承问题:出现在C++中,原理是A =>B 与 C => D,在B,C类中分别覆盖了父类A的某个方法,当D继承B与C(多重继承)时,D中的那个方法不知如何选取。

JAVA中为了避免菱形继承问题,只允许单继承。

 

4.4 抽象类和接口不能用来创建对象,但是我们可以用它们来声明对象变量或数组,也可以让方法返回抽象类类型或者接口类型。

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值