java中基类和子类的类型是一样的吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中基类和子类的类型是一样的吗?相关的知识,希望对你有一定的参考价值。

java中基类和子类的类型是一样的吗? 不论继承多少代
所以可以传递子类的对象调用基类的方法或成员变量?!!

参考技术A 引用一样当然类型也一样了。如果不理解,教你个简单测试:
把父类的构造函数里面写点测试内容,子类的构造函数也写上测试内容。然后你运行下看看就OK了!例如:
//下面父类
public class fatherClass
public fatherClass()
System.out.println("我是父类");


//下面子类
public class sumClass extends fatherClass
public sumClass()
System.out.println("我是子类");


//接着你就慢慢测试咯!
。。。。。。。
参考技术B 不确切 变量的属性范围在继承中规定 继承父类的子类的权限不应该比父类小
言外之意是可以比他大

至于你补充的问题 一般有经验的程序员都会用接口 子类用基类的实现的根本原因在于 程序设计时不同层次的分离 是复写 重用 灵活性的表现,也就是基础提到的特点之一本回答被提问者采纳
参考技术C 子类有可能跟父类一样.,如果,父类实现了一个接口.而子类没实现,那就不一定了. 参考技术D 这个问题,要看你的子类是否有实现其它的 接口

因为子类如果实现了其它的抽象类,那么子类中的属性或方法都会与基类有所不同

Java内部类的用途是啥?嵌套类和内部类是一样的吗? [复制]

【中文标题】Java内部类的用途是啥?嵌套类和内部类是一样的吗? [复制]【英文标题】:What are the uses of inner classes in Java? Are nested classes and inner classes the same? [duplicate]Java内部类的用途是什么?嵌套类和内部类是一样的吗? [复制] 【发布时间】:2011-02-25 20:49:46 【问题描述】:

可能重复:Java inner class and static nested class

Java 内部类的用途是什么?嵌套类和内部类是一样的吗?

【问题讨论】:

【参考方案1】:

不,它们不一样:内部类不是static

JLS 8.1.3 Inner Classes and Enclosing Instances

inner 类是没有显式或隐式声明为静态的嵌套类。

另请参阅 Joe Darcy 的以下图表:

Joseph D. Darcy's Oracle Weblog - Nested, Inner, Member, and Top-Level Classes


相关问题

Java inner class and static nested class

【讨论】:

【参考方案2】:

另一个答案很好地解决了差异。关于它们的用法/相关性,这是我的看法:

匿名类:方便生产力

它们很容易实现回调,无需创建新的 named 类。

button.addActionListener(
      new ActionListener() 
         public void actionPerformed( ActionEvent e ) 
              frame.dispose();
         
      
);

它们对于线程(例如匿名Runnable)和其他一些类似的模式也很方便。

静态嵌套类:方便封装

静态嵌套类本质上和普通类一样,只是它们的名字是OuterClass.StaticNestedClass,你可以使用修饰符。因此,它提供了某种形式的封装,而***类无法完全实现。

LinkedList 为例,您希望类 Node(仅在内部使用)在包视图中不可见。使其成为静态嵌套类,使其完全位于LinkedList 内部。

内部类:方便所有权封装

内部类的instance 可以访问其封闭类instance 的字段。再想想链表,想象Node 是一个内部类:

public class LinkedList 
  private Node root = null;

  public class Node 
    private Object obj;
    private Node next;

    ...

    public void setAsRoot() 
       root = this;
    
  

  public Node getRoot() 
    return root;
  

  public void setRoot( Node node ) 
    root = node;
  


属于LinkedList 的每个Node 实例都可以直接访问它。列表与其节点之间存在隐含的所有权关系;该列表拥有它的节点。如果使用常规类实现相同的所有权关系,则需要额外的代码。

见Achieve better Java code with inner and anonymous classes

【讨论】:

我喜欢这个答案,从 .net 世界到没有代表存在的世界,内部类可以证明是有用的......

以上是关于java中基类和子类的类型是一样的吗?的主要内容,如果未能解决你的问题,请参考以下文章

关于Java中基类构造器的调用问题

java多态中父类和子类一定要有一样的方法名吗

java 作业04 类和对象

基类和子类函数名相同且参数类型一样,基类函数如何被覆盖,还存在吗?存在何处?请详细回答,谢谢~~~~

C#中基类属性值在子类中设置,如何在基类的方法中获取子类设置的值?

mfc 类型间的强制转换