Java进阶篇(二)——抽象类、内部类
2018-06-18 03:39:50来源:未知 阅读 ()
之前在类和对象中我们说到了类的普通特性,本篇将介绍类的一些高级特性。
一、抽象类
抽象类:抽象类是只声明方法的存在而不去具体实现它的类。抽象类不能被实例化,也就是不能创建其对象。使用abstract关键字定义抽象类,直接上例子。
下面是一个抽象类的定义,在class前直接加上abstract关键字。最后一句“public abstract void voice();”是一个抽象方法,没有实际意义,必须用子类重写。需要注意的是,抽象方法只有方法的声明,而没有方法的实现,与接口类似,但是用abstract关键字修饰的。对于抽象方法前的修饰,不能使用private或static关键字。
abstract class Animal { // 定义抽象类 public String animal; // 定义颜色成员变量 public Animal() { // 定义构造方法 animal="bird"; } public abstract void voice(); // 定义抽象方法 }
接下来实现一下抽象方法。方法是在抽象类的子类中通过重写该方法实现抽象方法。
public class Dog extends Animal { @Override public void voice() { System.out.println("woof..."); } } public class Cat extends Animal { @Override public void voice() { System.out.println("nya..."); } }
二、内部类
内部类:在一个类中再定义一个类,就将在类中再定义的那个类称为内部类。分为成员内部类、局部内部类以及匿名内部类。比如下方代码就是成员内部类:
public class OuterClass { // 外部类 private class InnerClass { // 内部类 //... } }
在内部类中可以直接使用外部类的类成员。
1. 局部内部类与成员内部类
而局部内部类是指在类的方法中定义的内部类,作用范围为整个方法体。这里就不举例了,其实跟成员变量、局部变量是一个道理,区别在于作用范围而已。成员内部类同理。
2. 匿名内部类
匿名内部类大量使用于图形化编程的事件监控器代码中,可以大大简化代码增强可读性。顾名思义就是没有名称的类,可使用默认构造方法来生成匿名内部类的对象。在匿名内部类后需要加分号标识。比如后面在swing编程中,在编写框体时,对鼠标、键盘事件的引入就会用到匿名内部类,写到那里时再提及。
3. 静态内部类
静态内部类为在内部类前添加修饰符static。特点就是不可以使用外部类的非静态成员。
4. 内部类的继承
内部类也可以继承,比如继承ClassA类中的内部类ClassB,写作“extends ClassA.ClassB”。但必须硬性给予这个类一个带参数的构造方法,并且该构造方法的参数为需要继承内部类的外部类的引用,同时在构造方法体中使用a.super()语句,这样才为继承提供了必要的对象引用。下面看一个例子。
1 public class Example extends ClassA.ClassB { // 继承内部类ClassB 2 public Example(ClassA a) { 3 a.super(); 4 } 5 } 6 class ClassA { 7 class ClassB { 8 } 9 }
以上就是本篇的内容。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:设计模式-30秒看懂工厂模式
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash