一、父类和子类在同一个外部类中
package org.lgy.study.innerclass; public class InnerClassInheritance{ //如果父类是静态的,则子类既可以是静态的也可以是非静态的; //如果父类是非静态的,则子类只能是非静态的。 public static class InBase{ public InBase(String msg){ System.out.println("InBase's constructor : " + msg); } public void method1(){ System.out.println("method1 in InBase"); } } /* 子类和父类位于同一个外部类中,这种继承和普通的继承没有任何区别。 */ public class InSub extends InBase{ public InSub(String msg){ super(msg); System.out.println("InSub's constructor"); } //子类中的method1方法会覆盖掉父类中的method1方法 public void method1(){ System.out.println("method1 in InSub"); super.method1(); } } }
package org.lgy.study.main; import org.lgy.study.innerclass.InnerClassInheritance; public class InnerClassMain{ public static void main(String[] args){ InnerClassInheritance.InBase inBase = null; inBase = new InnerClassInheritance().new InSub("*****"); inBase.method1(); } }
二、子类不在父类所在的外部类中
1、父类为非静态内部类
package org.lgy.study.innerclass; public class InnerClassInheritance{ //如果父类是静态的,则子类既可以是静态的也可以是非静态的; //如果父类是非静态的,则子类只能是非静态的。 public class InBase{ public InBase(String msg){ System.out.println("InBase's constructor : " + msg); } public void method1(){ System.out.println("method1 in InBase"); } } }
package org.lgy.study.innerclass; public class InSub extends InnerClassInheritance.InBase{ public InSub(InnerClassInheritance obj){ //因为子类InSub的父类是一个非静态内部类,所以在调用它的构造器时,必须使用一个其外部类的对象。 //也就是说,必须显式创建一个外部类的对象并传入子类,然后在子类中使用这个外部类对象来调用 //非静态内部类的构造器 obj.super("*****"); System.out.println("InSub's constructor"); } public void method1(){ //子类中的method1方法会覆盖掉父类中的method1方法 System.out.println("method1 in InSub"); //当创建完子类的对象之后,就可以像普通子类一样通过super来调用父类的方法 super.method1(); } }
2、父类为静态内部类
package org.lgy.study.innerclass; public class InnerClassInheritance{ //如果父类是静态的,则子类既可以是静态的也可以是非静态的; //如果父类是非静态的,则子类只能是非静态的。 public static class InBase{ public InBase(String msg){ System.out.println("InBase's constructor : " + msg); } public void method1(){ System.out.println("method1 in InBase"); } } }
package org.lgy.study.innerclass; //继承静态内部类就像继承普通类一样 public class InSub extends InnerClassInheritance.InBase{ public InSub(){ //因为父类是一个静态内部类,它属于外部类,调用它的构造器时无需创建对象 super("*****"); System.out.println("InSub's constructor"); } public void method1(){ //子类中的method1方法会覆盖掉父类中的method1方法 System.out.println("method1 in InSub"); //当创建完子类的对象之后,就可以像普通子类一样通过super来调用父类的方法 super.method1(); } }
public class InnerClassMain{ public static void main(String[] args){ InnerClassInheritance.InBase inBase = new InSub(); inBase.method1(); } }
相关推荐
面向对象程序设计中,可以将一个类的定义 放在另一个类的内部,这就是内部类(有的地方叫嵌套类), 包含内部类的类也被称为外部类(有的地方也叫宿主类...但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口
Java语言中的内部类根据定义的位置和访问权限可以分为四类:成员...匿名内部类是没有命名的内部类,通常用于实现接口或继承父类;静态内部类是定义在类的内部且与类的实例无关的类。以上是对内部类的简要分类和认识。
面向对象类继承和内部类精选.pptx
是个很麻烦,很纠结的问题 内部类基本语法 内部类继承 子类与父类的内部类同名 匿名类 内部接口及接口中的内部类 内部类的类文件 为什么需要内部类--内部类用途
定义在一个类内部的类叫内部类,包含内部类的类...内部类可以声明public、protected、private等访问限制,可以声明为abstract的供其他内部类或外部类继承与扩展,或者声明为static、final的,也可以实现特定的接口。
Java内部类继承问题的分析
面向对象(类的继承和内部类).ppt
主要介绍了Java内部类的继承,大家都知道JAVA内部类的构造器必须连接指向其外围类对象的引用,所以在继承内部类的时候,需要在导出类的构造器中手动加入对基类构造器的调用,需要的朋友可以参考下
并且,Rectangle类包含一个内部类JudgeSquare,它有一个方法judge(),判断这个长方形是否为一个正方形,并输出判断结果。 (4)编写测试类Test,生成一个Circle对象和两个Rectangle对象(一个为长方形,一个为正方形...
内部类的使用,不使用内部类的达到内部类效果的写法,
Abstract class 抽象类:抽象类是不允许实例化的类,因此一般它需要被进行扩展继承。 Abstract method 抽象方法:抽象方法即不包含任何功能代码的方法。 Access modifier 访问控制修饰符:访问控制修饰符用来...
2.继承: 子类对象拥有与其基类相同的全部属性和方法。 例如人都共有的一些属性:鼻子、眼睛、嘴巴……和一些方法:吃饭、睡觉……可以由此基础上再整出亚洲人、欧洲人、非洲人…… 3.多态:指在基类中定义的属性和...
基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io的语法,虚拟机方面的语法。历年常见面试题型,涵盖Java基础,javase,spring,srpingmvc,...
演示程序 博文链接:https://invocationhandler.iteye.com/blog/1581128
Java 内部类有什么好处?为什么需要内部类? 首先举一个简单的例子,如果你想实现一个接口,但是这个接口中的一个方法和你构想的这个类中的一个方法的名称,参数相同,你应该怎么办?这时候,你可以建一个内部类...
第3章 类的封装、继承和多态 第4章 接口、内部类和Java API基础 第5章 异常处理 第6章 图形用户界面 第7章 多线程 第8章 Applet应用程序 第9章 输入/输出流和文件操作 第10章 网络通信 第11章 数据库应用 第12章 ...
很好的Java面试题第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
在java提高篇—–详解内部类中对匿名内部类做了一个简单的介绍,但是... 在这里我们看到使用匿名内部类我们必须要继承一个父类或者实现一个接口,当然也仅能只继承一个父类或者实现一个接口。同时它也是没有class关
java父类的构造方法使用,和super的方法
类:完全可扩展的,除非显示的声明sealed 否则类可以继承其他类和接口,自身也能被继承 注:虽然结构不能被继承 可是结构能够继承接口,方法和类继承接口一样 例如:结构实现接口 interface IImage { void Paint()...