java和C#面向对象的区别

    xiaoxiao2025-01-10  14

    问题:C#中的构造函数和java的构造函数一样吗? 答:  .net的项目中,写实体Entity属性时,经常会为每一个属性写一对get和set方法,在用到这个实体或是一个类时,通过new实例化一个对象,并没有很强调构造方法    而java中很强调构造方法   

    通过构造方法来构建成自己的一个新对象

    是java中用来初始化对象的函数

    与类同名,且没有返回值

    如果不写,会调用系统默认构造函数

    一旦写了,就会将默认的覆盖,只能用自己写的构造函数 。 构造函数的好处:将内容传递给堆内存后,在栈内存中消失,再实例化的时候,还是会调用这个构造函数的 在java中,继承中的构造函数也是有规则

    子类构造必须调用父类的构造函数,通过在自己的构造方法中声明super来调用父类的构造函数,必须写在子类所有构造方法之前

    子类可以使用this关键字调用本类外的构造方法

    子类中没有出现父类的构造方法,会默认调用父类无参的构造方法

    整个过程是内存复制来复制去的过程,还是要弄懂它的内存解析过程

    问题:C#中的继承和java的继承区别? 答: C#中有将到关于继承的东西,尤其在大话设计模式中,体现得很多很深。但当时更多的注重怎么用继承来实现功能。 但java中的继承,更多的是从内存解析的角度来看,父子类的成员变量分配。 问题:this如何处理成员变量和参数重名问题? 答: 比如说一个类它的属性(静态或动态)名称和参数的名称一致,在调用的时候,就不知道用的是参数还是类的成员变量,所以用this关键字,就可以区分它到底是参数还是成员变量,因为成员变量可以通过this.点出来,而参数是不可以的,这样的话,它们之间进行传值,就会区分不开,不会混淆了。 问题:包装类 类似于C#中的? 答:   在C#中,不记得有包装类这个东西   而在java中却强调了这个包装类,在java中只有4中8类基础类型会被分配在栈内存上,其余都会被分配到堆内存上   若想要基础类型分配到堆内存上,可以用基础类型的包装类实现。 问题:4种类的访问权限? 答:

     也叫四种权限修饰符  public protected private 置于类的成员定义前,用来限定其他对象对这个类的访问  public default 用来修饰class类

    public都可以访问这个类default 只有同一个包内部的类才可以访问这个类 问题:instanceof? 答: 判断一个类是不是另一个类的子类,返回值是布尔值 问题:为什么要定义一个接口? 答:  java不支持多重继承,但现实世界又存在多重继承的现象,所以通过接口实现多重继承  多个无关的类可以实现同一接口,同样的,一个类一个实现多个接口,这样的话,实现多个接口就相当于实现多个继承  接口相当于一个抽象类,这个类可以被多个类实现(继承),从而解决了java中无法实现多重继承的问题  接口中的抽象属性只能是static final的,而抽象方法只能是public的  这样,把一个类当做不同的对象,接口使得类暴露了部分方法  帮助完成多重继承的逻辑,并和实现它的类之间实现多态性 问题:extends? 答:   继承的关键词 问题:java里关于异常的部分,真的很多,很充分? 答: 异常是什么?是程序运行期间出现的问题 出现了错误,java怎么处理? 在运行过程中,发生什么异常,java会生成一个什么样的异常类对象,生成以后,就直接抛给java运行时系统,默认的处理是将异常类中包装的信息直接打印出到命令行,控制台上;你要想处理这种异常,只要逮住这种异常就可以了,也可以在抛给运行时系统之前,先逮住,做出相应得处理 必须有try,否则不能出现catch

    Throwable: 所有异常类的基类Error:系统的错误,虚拟机的错误,你的程序处理不了的错误Exception:可以处理的错误,RuntimeException:经常出现的异常,这种错误,可以catch,也可以不catch 关于多层catch的捕获机制也有处理办法,一层层的往外跳转 而且必须先抛出小异常,再抛出大异常,否则编译报错 也可以自定义异常类 问题:基类的异常捕获机制,不能放在子类的异常捕获机制上面? 答: 必须先抛出小异常,再抛出大异常,否则编译报错
    最新回复(0)