Java面向对象编程(二)

本文深入探讨Java中的抽象类、接口、内部类等高级概念。解释抽象类与接口的区别及应用场景,介绍内部类的种类与使用方法,并讨论final与static修饰符的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇博文里总结了面向对象三大特性在Java中的体现。如今谈一谈Java中的抽象类,接口,内部类等特性。

一. 抽象类

public abstract class Shape {
	public int shapeID = 0;
	public abstract double getArea();
}
  1. Java中同意类、接口或成员方法具有抽象属性,而不同意成员域或构造方法具有抽象属性。

  2. 类修饰词中含有abstract的类具有抽象属性,称为抽象类;接口总是具有抽象属性。

  3. 假设成员方法的修饰词中含有abstract。则该成员方法具有抽象属性,称为抽象方法。抽象方法仅仅能在抽象类或接口中定义。而抽象类中一般有至少一个抽象方法,所以整体上来讲。含有抽象方法的类叫做抽象类。
  4. 抽象方法不含方法体。格式例如以下:
    [方法修饰词列表] 返回类型 方法名(參数列表);
  5. 抽象类能够具有构造方法。但不能直接生成实例,必须通过非抽象子类生成实例。

  6. 假设抽象类的子类不是抽象类,则要求在子类的定义中必须覆盖父类(抽象类)的全部抽象方法。

二. 接口

Java不同意一个子类拥有多个直接父类,但同意一个类实现多个接口。接口定义的格式为:
[接口修饰词列表] interface 接口名 [extends 接口名列表] { 接口体 }
public interface Shape {
	public static final double PI = 3.14159;
	public abstract double getArea();
}
  1. 外部接口和外部类一样,一般都不具有protected和private属性
  2. 接口本身具有抽象属性。所以abstract修饰词是不必要的。

  3. 接口体内部不含构造方法,不能直接通过接口生成实例对象
  4. 接口的全部成员域都具有public、static和final属性;接口的全部成员方法都具有public和abstract属性
  5. 若实现接口的类不是抽象类。则须要在该类的类体中定义覆盖该接口中的全部成员方法。

三. 内部类

实名内部类

  1. 实名内部类的封装性修饰词添加了protected和private。

    能够依据情况选择。

  2. 对于不具有静态属性的实名内部类,假设它的成员域具有静态属性,则必须同一时候具有final属性;不具有静态属性的实名内部类不能含有具有静态属性的方法。

  3. 实名内部类实例对象的创建方法
    * 静态实名内部类的实例对象:
    new 外部类名.实名内部类名(參数列表)
    *
    不具有静态属性的实名内部类的实例对象:
    外部类表达式.new 实名内部类名(參数列表)

匿名内部类

匿名内部类不具有类名,不能具有抽象和静态属性,而且不能派生出子类。匿名内部类的定义格式是:
new 父类型名(參数列表) { 类体 }

举个样例比較easy理解:
abstract class ClassA {
	int data;
	public ClassA (int i) { data = i; }
	public abstract void method();
}

public class ClassB {
	public static void main(String[] args) {
		ClassA a = new ClassA(3) {
			public void method() {
				System.out.println(data);
			}
		};
		
		a.method();
	}
}

四. final 修饰词

  1. 具有final属性的的类不能派生子类
  2. 假设成员域具有final属性。则不能被子类的成员域所覆盖,且在赋值后不能被改变。假设成员域同一时候具有final和static属性,则其仅仅能在定义时赋值;假设成员域仅仅具有final属性。不具有static属性。则仅仅能在定义时或构造方法中赋值。
  3. 假设一个类的成员方法具有final属性。则其不能被当前类的子类的成员方法覆盖。

五. static 修饰词

除内部类外,类一般不具有static属性。static的内部类的原因和特性还须要进一步学习。

六. Misc

abstract, static, final是三个经常使用修饰词。

这三个修饰词中仅仅有static和final两个修饰词能够组合在一起。

包与接口实验报告 实验 包与接口 【实验目的】 1. 了解Java 中包(package)、接口(interface)的作用。 2. 掌握包、接口设计方法。 【实验要】 1. 了解Java 系统包的结构。 2. 掌握创建自定义包的方法。 3. 掌握使用系统接口的技术和创建自定义接口的方法。 【实验步骤】 一.了解并使用Java 的系统包 1. API 包、接口、异常处理的作用 包是类和接口的集合。利用包可以把常用的类或功能相似的类放在一个包中。Java 语言提供系统包,其中包含了大量的类,可以在编写Java 程序时直接引用它们。为便于管理和使用它们,将这些类分为了不同的包。包又称类库或API 包,所谓API(Application Program Interface)即应用程序接口。API 包—方面提供丰富的类与方法供大家使用,如画图形、播放声音等,另一方面又负责和系统软硬件打交道,圆满实现用户程序的功能。所有Java API 包都以“java.”开头,以区别用户创建的包。 常见Java系统包及其作用: 1)语言包(java.lang):提供的支持包括字符串处理、多线程处理、异常处理、数学函数处理等,可以用它简单地实现Java程序的运行平台。 2)实用程序包(java.util):提供的支持包括哈希表、堆栈、可变数组、时间和日期等。 输入输出包(java.io):用统一的流模型来实现所有格式的I/O,包括文件系统、网络、输入。 3)网络包(java.net):支持Internet的TCP/IP协议,用于实现Socket编程;提供了与Internet的接口,支持URL连接,WWW的即时访问,并且简化了用户/服务器模型的程序设计。 4)抽象图形用户接口包(javax.swing):实现了不同平台的计算机的图形用户接口部件,包括窗口、菜单、滚动条、对话框等,使得 Java可以移植到不同的平台。 接口解决了Java 不支持多重继承的问题,可以通过实现多个接口达到与多重继承相同的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值