精华内容
下载资源
问答
  • 1.简要介绍java程序的健壮性。...(其实我觉得它不是完全面向对象的)答:因为它不支持任何面向过程的程序设计技术它的所有程序设计技术都是用类来实现的。另答:因为它有8种简单数据类型不是面向对象的,可以直接使...

    1.简要介绍java程序的健壮性。

    答:JAVA程序会在编译和运行的时候自动的检测可能出现的错误,而且它是一种强类型语言,对于类型的检查很严格,而且它的垃圾回收机制也有效的避免了内存的泄漏。

    2.为什么说java语言是完全面向对象的?(其实我觉得它不是完全面向对象的)

    答:因为它不支持任何面向过程的程序设计技术它的所有程序设计技术都是用类来实现的。

    另答:因为它有8种简单数据类型不是面向对象的,可以直接使用它,用static申明的变量或方法不是面向对象的,因为它不属于任何一个对象,要调用它可以直接使用,不用对它进行实例化(这种方法还在争论中)。

    3.简要介绍java如何实现安全性。java支持多重继承吗

    答:首先JAVA删除了指针这就避免了非法的内存操作,所有对内存的操作都必须通过对象的实例来实现。而且当我们从网上下载代码执行是它的安全系统能确保恶意程序不会随便访问我们本地计算机的资源。

    4.为什么说java是解释性的?

    答:因为我们在执行JAVA文件时,编译器会先把代码译成字节码文件,这是一种中间代码,然后JAVA解释器才进行执行。

    5.简要介绍java的平台无关性。

    答:JAVA程序是在虚拟机上执行的,只要安装了JAVA虚拟机它就可以以字节码的形式在任何平台上执行。

    6.简要介绍java的多态性。

    答:多态性是指同名的不同方法在程序中共存,系统根据不同的情况调用不同的方法实现不同的功能。实现多态性的方法有两种:覆盖实现,重载实现。java支持多重继承吗

    7.简要介绍java是强类型检查语言。

    答:JAVA对数据类型的检查非常严格,在定义和用变量时必须先指定其类型而且它只允许数据类型的向上提升,而且不允许出现会出现数据丢失的附值(如把小数附给整形)。

    8.int和 Integer有什么区别?

    答:int是简单数据类型(整形)而Integer是整形的封装类。

    9.简要介绍String和StringBuffer的区别?

    答:String类代表不可变字符串。在值创建之后就不能被改变。而StringBuffer是可变的字符序列,初始容量16字节,通过某些方法可改变其内容和长度。

    10.简要介绍java的垃圾回收机制。

    答:JAVA的垃圾回收机制就是:当一个对象没有任何引用时,该对象便会启动垃圾回收器调用finalize方法以配置系统资源或执行相关的清除操作。

    1、面向对象编程(OOP):OOP最重要的思想是类,类是模板,从类中构造一个对象,即创建了这个类的一个实例;

    2、封装:是把数据和行为结合在一起,并对对象使用者隐藏数据的实现过程,通常一个对象中的数据叫他的实例字段(instance field) ;

    3、继承:Java中允许在已经存在的类的基础上构建新的类,当你继承一个已经存在的类时,那么你就复用了这个类的方法和字段,同时你可以在新类中添加新的方法和字段;

    4、多态:在java中,对象变量是多态的;需要注意的是java中不支持多重继承;

    5、类之间的关系:

    use-a :依赖关系 ;

    has-a :聚合关系 ;

    is-a : 继承关系--例:A类继承了B类,此时A类不仅有了B类的方法,还有其自己的方法;

    6、构造对象使用构造器:构造器是一种特殊的方法,它的作用是构造对象并对其初始化,

    构造器特点:构造器可以有0个,一个或多个参数 ;

    构造器和类名称是相同的;

    一个类可以有多个构造器;

    构造器没有返回值;

    构造器一定是和new运算符一起使用的;

    gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==

    7、包(package):Java允许把一个或多个类放在一起成为一组,称作为包,以便于更好的管理,标准Java库分为许多包如java.lang、java.util、java,net等,包是分层次的,所有的java包都在java和javax包层次内;

    8、重载:当多个方法具有相同的名字而含有不同的参数时,这时就发生了重载,编译器会选出调用哪个方法;

    9、健壮特性:Java采取了一个安全指针模型,能有效防止重写内存和数据崩溃;

    10、安全:Java可以用来构建防病毒和防攻击的系统,事实证明Java在防毒方面做的比较好;

    11、可移植性:Java中对基本数据结构类型的大小和算法都有严格的规定,所以有很好的可移植性;

    12、多线程:由于Java的机制,它处理多线程的过程很简单,Java把多线程实现交给底下操作系统或线程程序完成,所以多线程是Java作为服务器端开发语言的流行原因之一;

    13、动态绑定:这是Java调用对象方法的机制;

    14、Java中的每一个类都是从Object类扩展而来的;

    15、内部类:一个内部类的定义是定义在另一个内部类中;

    本文来自电脑杂谈,转载请注明本文网址:

    http://www.pc-fly.com/a/sanxing/article-69370-1.html

    展开全文
  • java可以多重继承吗 有时我写了几篇有关Java继承,接口和组成的文章。 在这篇文章中,我们将研究多重继承,然后了解组成优于继承的好处。 Java中的多重继承 多重继承是创建具有多个超类的单个类的能力。 与其他一些...
    java可以多重继承吗

    java可以多重继承吗

    有时我写了几篇有关Java继承接口组成的文章。 在这篇文章中,我们将研究多重继承,然后了解组成优于继承的好处。

    Java中的多重继承

    多重继承是创建具有多个超类的单个类的能力。 与其他一些流行的面向对象的编程语言(例如C ++)不同, java不提供对类中多重继承的支持 Java不支持类中的多重继承,因为它可能导致钻石问题,而不是提供一些复杂的方法来解决它,而是有更好的方法来实现与多重继承相同的结果。

    钻石问题

    为了轻松理解钻石问题,我们假定Java中支持多重继承。 在这种情况下,我们可以像下面的图像那样有一个类层次结构。

    钻石问题多重继承

    假设SuperClass是一个抽象类,声明了一些方法,而ClassA,ClassB是具体类。

    超类.java

    package com.journaldev.inheritance;
    
    public abstract class SuperClass {
    
    	public abstract void doSomething();
    }

    ClassA.java

    package com.journaldev.inheritance;
    
    public class ClassA extends SuperClass{
    
    	@Override
    	public void doSomething(){
    		System.out.println("doSomething implementation of A");
    	}
    
    	//ClassA own method
    	public void methodA(){
    
    	}
    }

    ClassB.java

    package com.journaldev.inheritance;
    
    public class ClassB extends SuperClass{
    
    	@Override
    	public void doSomething(){
    		System.out.println("doSomething implementation of B");
    	}
    
    	//ClassB specific method
    	public void methodB(){
    
    	}
    }

    现在,让我们说ClassC的实现如下所示,它扩展了ClassA和ClassB。

    ClassC.java

    package com.journaldev.inheritance;
    
    public class ClassC extends ClassA, ClassB{
    
    	public void test(){
    		//calling super class method
    		doSomething();
    	}
    
    }

    注意, test()方法正在调用超类doSomething()方法,这导致歧义,因为编译器不知道要执行哪个超类方法,并且由于菱形类图,它被称为Diamond Problem,这是Java不支持类中的多重继承的主要原因。

    请注意,具有多个类继承的上述问题也可能只出现在三个类中,它们全部具有至少一个通用方法。

    接口中的多重继承

    您可能已经注意到,我一直在说类不支持多重继承,但是接口支持多重继承,并且单个接口可以扩展多个接口,下面是一个简单的示例。

    接口A.java

    package com.journaldev.inheritance;
    
    public interface InterfaceA {
    
    	public void doSomething();
    }

    接口B.java

    package com.journaldev.inheritance;
    
    public interface InterfaceB {
    
    	public void doSomething();
    }

    注意,两个接口都声明了相同的方法,现在我们可以拥有一个扩展这两个接口的接口,如下所示。

    接口C.java

    package com.journaldev.inheritance;
    
    public interface InterfaceC extends InterfaceA, InterfaceB {
    
    	//same method is declared in InterfaceA and InterfaceB both
    	public void doSomething();
    
    }

    这样做非常好,因为接口仅声明方法,并且实际实现将由实现接口的具体类完成,因此在接口的多重继承中不存在任何歧义的可能性。

    这就是为什么Java类可以实现多重继承的原因,例如下面的示例。

    接口Impl.java

    package com.journaldev.inheritance;
    
    public class InterfacesImpl implements InterfaceA, InterfaceB, InterfaceC {
    
    	@Override
    	public void doSomething() {
    		System.out.println("doSomething implementation of concrete class");
    	}
    
    	public static void main(String[] args) {
    		InterfaceA objA = new InterfacesImpl();
    		InterfaceB objB = new InterfacesImpl();
    		InterfaceC objC = new InterfacesImpl();
    
    		//all the method calls below are going to same concrete implementation
    		objA.doSomething();
    		objB.doSomething();
    		objC.doSomething();
    	}
    
    }

    您是否注意到,每当我覆盖任何超类方法或实现任何接口方法时,我都使用@Override注释,它是三个内置的Java注释之一,并且 在覆盖任何方法时都应 始终使用覆盖注释

    救援人员组成

    因此,如果我们想在ClassC使用ClassA函数methodA()ClassB函数methodB() ,该解决方案在于使用composition ,这是ClassC的重构版本,该版本使用了composition来利用这两种类方法以及doSomething ()方法来自其中一个对象。

    ClassC.java

    package com.journaldev.inheritance;
    
    public class ClassC{
    
    	ClassA objA = new ClassA();
    	ClassB objB = new ClassB();
    
    	public void test(){
    		objA.doSomething();
    	}
    
    	public void methodA(){
    		objA.methodA();
    	}
    
    	public void methodB(){
    		objB.methodB();
    	}
    }

    组合与继承

    Java编程的最佳实践之一是“通过接口支持组合”,我们将研究一些偏爱这种方法的方面。

    1. 假设我们有一个超类和子类,如下所示:

      ClassC.java

      package com.journaldev.inheritance;
      
      public class ClassC{
      
      	public void methodC(){
      	}
      }

      ClassD.java

      package com.journaldev.inheritance;
      
      public class ClassD extends ClassC{
      
      	public int test(){
      		return 0;
      	}
      }

      上面的代码可以编译并正常工作,但是如果ClassC实现更改如下:

      ClassC.java

      package com.journaldev.inheritance;
      
      public class ClassC{
      
      	public void methodC(){
      	}
      
      	public void test(){
      	}
      }

      请注意,子类中已经存在test()方法,但返回类型有所不同,现在ClassD将无法编译,并且如果您使用的是任何IDE,它将建议您更改超类或子类中的返回类型。

      现在想象一下这样的情况:我们具有多个级别的类继承,并且超类不受我们控制,我们别无选择,只能更改我们的子类方法签名或名称以消除编译错误,我们还必须在所有方面进行更改子类方法被调用的地方,因此继承使我们的代码易碎。

      组合永远不会发生上述问题,这使其比继承更有利。

    2. 继承的另一个问题是,我们将所有超类方法公开给客户端,并且如果我们的超类设计不当且存在安全漏洞,那么即使我们在实现类时全神贯注,我们也会受到不良实现的影响。超类。组合可以帮助我们提供对超类方法的受控访问,而继承不提供对超类方法的任何控制,这也是组合优于继承的主要优势之一。
    3. 组合的另一个好处是它提供了方法调用的灵活性。 我们上ClassC实现不是最佳的,它提供了与将要调用的方法的编译时绑定,只需进行最小的更改,我们就可以使方法调用变得灵活并使其动态。

      ClassC.java

      package com.journaldev.inheritance;
      
      public class ClassC{
      
      	SuperClass obj = null;
      
      	public ClassC(SuperClass o){
      		this.obj = o;
      	}
      	public void test(){
      		obj.doSomething();
      	}
      
      	public static void main(String args[]){
      		ClassC obj1 = new ClassC(new ClassA());
      		ClassC obj2 = new ClassC(new ClassB());
      
      		obj1.test();
      		obj2.test();
      	}
      }

      上面程序的输出是:

      doSomething implementation of A
      doSomething implementation of B

      方法调用的这种灵活性在继承中不可用,并且提倡了最佳做法,即在继承方面偏向于组合。

    4. 单元测试很容易组合,因为我们知道超类中正在使用的所有方法,并且可以对其进行模拟,而在继承中,我们很大程度上依赖于超类,并且不知道将使用所有超类方法,因此我们需要要测试超类的所有方法,这是一项额外的工作,由于继承,我们不需要这样做。

    理想情况下,仅当在所有情况下父类和子类的“ is-a ”关系均成立时才应使用继承,否则我们应该继续进行组合。

    翻译自: https://www.javacodegeeks.com/2013/08/multiple-inheritance-in-java-and-composition-vs-inheritance.html

    java可以多重继承吗

    展开全文
  • 在标题为“Java:概述”由James Gosling在...这主要包含运算符重载(虽然它确实有办法重载),多重继承java支持多重继承吗,以及广泛的自动强行转化。谁比的James Gosling博士资格做出评论。这一段给了我们一个的概述...

    59becf3035cf56d2225d91170c3ed900.png

    在标题为“Java:概述”由James Gosling在1995年2月的白皮书,给出了一个想法,为什么在Java不支持多继承。

    JAVA省略了许多很少用到,缺乏认识,混淆功能的C + +,在我们的心得中增添更多的痛苦多于回报。这主要包含运算符重载(虽然它确实有办法重载),多重继承java支持多重继承吗,以及广泛的自动强行转化。

    loadimage.php?id=93300

    c73ca03653edf617b0f43855275c4ca6.png

    谁比的James Gosling博士资格做出评论。这一段给了我们一个的概述和他接触这个主题不支持多重继承。

    Java不支持多继承

    9eb6f084c169158f6bc885cfe50215e6.png

    首先让我们钉了这一点。这本来就是一个点的探讨,Java是否支持多重继承与否。有人说,它支持使用接口。没有在java中不支持多重继承。如果你不坚信我的话,再次看了前面的段落,而这种都是Java之父的话。

    使用接口支持多重继承的这个故事是我们开发人员熟了。接口不是具体的类,并提供了灵活性,我们有选项可以实现多个接口,使用单一类。这是我们秉承创建一个类的两个蓝图的协议。

    945d85854a76e6ec62593797d759c416.png

    这是进而得到更密切的多重继承。我们要做的是实现多个接口,在这里,我们不扩展(继承)任何东西。实现类是一个要添加的属性和行为。它是从父类没有得到实施。我只想说java支持多重继承吗,在java中不支持多重继承。

    多重继承

    c35e6fe911260f581392ddadfc300644.png

    多重继承是我们到一个单独的类继承多个类的属性和行为。C + +,普通的列表,Scala的是一些流行的语言支持多重继承。

    189ff068a47bdc124b70ef444d76c0e6.png

    为什么Java不支持多重继承?

    现在,我们必定是在java中不支持多重继承。但是,为什么呢?这是一个设计决定的java的创造者。关键字是简洁和罕见的使用。

    简单

    本文来自电脑杂谈,转载请注明本文网址:

    http://www.pc-fly.com/a/sanxing/article-124083-1.html

    展开全文
  • Java“不支持状态的多重继承,但它支持使用默认方法实现多次继承,因为java 8发布和带接口的类型的多重继承。那么这里出现的问题就是“钻石问题”以及Java如何解决这个问题: -在多重继承实现的情况下,java编译器会...

    在有关多继承类型的Oracle文档页面中,我们可以在此处找到准确的答案。这里我们首先应该知道java中多重继承的类型: -

    多重继承状态。

    多重继承的实现。

    多重继承的类型。

    Java“不支持状态的多重继承,但它支持使用默认方法实现多次继承,因为java 8发布和带接口的类型的多重继承。

    那么这里出现的问题就是“钻石问题”以及Java如何解决这个问题: -

    在多重继承实现的情况下,java编译器会出现编译错误,并要求用户通过指定接口名称来修复它。这里的例子: -

    interface A {

    void method();

    }

    interface B extends A {

    @Override

    default void method() {

    System.out.println("B");

    }

    }

    interface C extends A {

    @Override

    default void method() {

    System.out.println("C");

    }

    }

    interface D extends B, C {

    }

    所以在这里我们会得到错误: -      接口D从类型B和C继承方法()的无关默认值。接口D扩展B,C

    您可以修复它: -

    interface D extends B, C {

    @Override

    default void method() {

    B.super.method();

    }

    }

    在java的多重继承中允许它,因为接口不包含可变字段,并且只有一个实现属于该类,所以java不会给出任何问题,它允许你这样做。

    在结论中我们可以说java不支持多重继承状态,但它确实支持多重继承实现和多重继承类型。

    展开全文
  • java支持多重继承吗?11.4 下面 a 中类 C的运行结果输出什么?编译b 中的程序的时候将出现什么问題?11.5 子类如何调用它的父类的构造方法?11.6 下面的说法是真是假: 当从子类调用构造方法时, 它的父类的无...
  • java继承与接口前两天写东西,本来想把定义和实现分开来写的。...如书所言:(1)java支持多重继承,也就是说子类至多只能有一个父类(2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己...
  • 2、JAVA支持单继承(一个子类只能有一个直接父类)、支持多重继承(A extends B,B extends C)。  JAVA不支持多继承,原因:如果两个父类有相同的方法,那么子类继承父类调用这个相同的方法的时候,会出现不 确定...
  • Q:Java支持多重继承吗? A:Java不支持多重继承,即一个子类只能有一个父类 Q:Java的类没有使用extends关键字的话,默认是哪个类的子类? A:Object类,任何类都是Object类的子孙类(Object类是java.lang包中的...
  • java支持多重继承吗?11.4 下面 a 中类 C的运行结果输出什么?编译b 中的程序的时候将出现什么问題?11.5 子类如何调用它的父类的构造方法?11.6 下面的说法是真是假: 当从子类调用构造方法时, 它的父类的...
  • 1、scala里面的Trait是接口的意思,java里面是关键词是interface//scala的接口...}2、scala不支持对类进行多继承,但是支持多重继承trait,使用with关键字即可类继承trait后,必须实现其中的抽象方法,实现时不需...
  • 由于Java支持多重继承,即一个类只能有一个父类,为了克服单继承的缺点,Java语言引入了接口这一概念。接口是抽象方法定义的集合(接口中也可以定义一些常量值),是一种特殊的抽象类。接口中只包含方法的定义,没有...
  • 简单说:1.extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,2.JAVA中不支持多重继承,但是可以用接口来实现,这样就要用到implements,3.继承只能继承一个类,但implements可以...
  • 此外,Java和C#等几种流行的编程语言不支持多重继承,这限制了这种方法的好处。 装饰器模式为扩展对象功能提供了一种灵活的继承替代方法。此模式的设计方式是多个装饰器可以堆叠在一起,每个...
  • 我首先问一个问题,在Java如何实现多重继承?...如果你了解c++,在c++中是支持多重继承的 但是Java把这个特性剔去了。 Java 为了解决在编程过程中遇到的多重继承的需要 设计了内部类这个特性去解决
  • 一个类有且仅有一个父类,这种特性被称之为“单重继承”,Java支持多重继承(重点) 为什么? ​ 1,语法设计 ​ 2,多重继承会来带麻烦 Java虽然不支持多重继承,但是父类还有父类,从而形成了继承链 两个重要...
  • JAVAday18

    2020-12-14 23:55:10
    但是可以多重继承, 一个子类继承了一个父类, 那么久拥有了 父类的所有的公共资源, 但是私有属性 ,获取不到, 必须提供 公共的属性的访问器, 继承中构造器可以被继承吗?不可以,但是必须被子类调用, 默认...
  • 基本概念  final类:为防止他人从你的类上派生新类,...而java中不支持多重继承。  抽象类:规定一个或多个抽象方法的类本身必须定义为abstract。  例:public abstract string getDescripition ...
  • 大家都知道适配器模式分为:类的适配器模式和对象的适配器模式,而且在多本书中都强调类的适配器模式是通过多重继承来实现的,而java支持单继承,所以就有类的适配器实现了,但是今天看了阎宏的《java与模式》一书...
  • 在20年的大部分时间里,面向对象语言设计的... 多重继承是真的必要吗(由C ++的开发者决定),还是无用又丑陋(由C#和Java语言的开发者确定)? Ruby和Scala是两种较新的语言,它们已在多重继承方面走了中间路线...
  • Android基础-Java基础二

    2018-12-29 16:55:07
    Java 不支持多继承,但支持多重继承。 子类拥有父类非private的属性,方法。 子类可以拥有自己的属性和方法 子类可以用自己的方式实现父类的方法 extends、implements、super、this、Override、Overlo...
  • JAVA_Thinking in Java

    2011-12-02 17:58:15
    7.5.1 Java的“多重继承” 7.5.2 通过继承扩展接口 7.5.3 常数分组 7.5.4 初始化接口中的字段 7.6 内部类 7.6.1 内部类和上溯造型 7.6.2 方法和作用域中的内部类 7.6.3 链接到外部类 7.6.4 static内部类 7.6.5 引用...
  • 文章目录前言特性中的继承访问控制符成员访问控制符private默认protectedpublic类的访问控制符非访问控制符...一个父类可以同时拥有多个子类,但是Java支持多重继承,即一个类只能有一个直接父类。父类是对所有子类的
  • 55 新特性之Java SE 8

    2013-08-01 13:49:56
    闭包算法,也就是Lambda表达式改变了Java原有太多的东西,多重继承(行为继承)好多C++的特性,C#的优点融入进来,这样的Java 你熟悉吗?做程序员与时俱进是必须的,不然离开一天,如隔几年,...
  • java 编程入门思考

    2012-03-30 17:50:08
    7.5.1 Java的“多重继承” 7.5.2 通过继承扩展接口 7.5.3 常数分组 7.5.4 初始化接口中的字段 7.6 内部类 7.6.1 内部类和上溯造型 7.6.2 方法和作用域中的内部类 7.6.3 链接到外部类 7.6.4 static内部类 7.6.5 引用...
  • 7.5.1 Java的“多重继承” 7.5.2 通过继承扩展接口 7.5.3 常数分组 7.5.4 初始化接口中的字段 7.6 内部类 7.6.1 内部类和上溯造型 7.6.2 方法和作用域中的内部类 7.6.3 链接到外部类 7.6.4 static内部类 7.6.5 引用...
  • ![图片说明]... 这里的画线句是说C++支持类之间的多重继承吗?但为什么说只有一个类可以具体实现?能不能有大佬给我翻译翻译?谢谢!还有这个图是什么意思呢?
  • Java初学者入门教学

    2012-03-14 21:17:15
    7.5.1 Java的“多重继承” 7.5.2 通过继承扩展接口 7.5.3 常数分组 7.5.4 初始化接口中的字段 7.6 内部类 7.6.1 内部类和上溯造型 7.6.2 方法和作用域中的内部类 7.6.3 链接到外部类 7.6.4 static内部类 7.6.5 引用...
  • java联想(中文)

    2008-12-29 21:07:11
    7.5.1 Java的“多重继承” 7.5.2 通过继承扩展接口 7.5.3 常数分组 7.5.4 初始化接口中的字段 7.6 内部类 7.6.1 内部类和上溯造型 7.6.2 方法和作用域中的内部类 7.6.3 链接到外部类 7.6.4 static内部类 7.6.5 引用...
  • java 面试题 总结

    2009-09-16 08:45:34
    java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 3、int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或内置...
  • 7.5.1 Java的“多重继承” 7.5.2 通过继承扩展接口 7.5.3 常数分组 7.5.4 初始化接口中的字段 7.6 内部类 7.6.1 内部类和上溯造型 7.6.2 方法和作用域中的内部类 7.6.3 链接到外部类 7.6.4 static内部类 7.6.5 引用...

空空如也

空空如也

1 2 3
收藏数 41
精华内容 16
关键字:

java支持多重继承吗

java 订阅