面向过程:优点:性能更好,广泛应用于单片机,嵌入式,Linux等需要注重性能的场景。原因是面向对象的语言需要将类实例化,资源消耗比较大,所以在注重性能的场景下一般使用面向过程的语言
面向对象:优点:易复用,易维护,易扩展。因为面向对象又封装,继承,多态等特性,所以可以设计出低耦合度的程序,使得维护和扩展更加方便,同时面向对象更容易复用,编写一个类可以实现多个对象。
当然,java不一定性能就一定比面向过程的语言性能差。但是由于语言特性,java不会直接编译成机器语言,而面向过程的语言会直接编译成机器能识别的语言,所以一般来说面向过程的语言性能会更好一些,当然并不绝对!
构造器不可以被Override,但是可以被重载。
对构造器Override也没有意义,因为不会有两个类有同样的类名。
1.从语法上:
成员变量:定义在类内,可以被public,private,protected,static等修饰符修饰。
局部变量:定义在代码块或者方法内,不可以被除了final以外的修饰符修饰。
2.从内存上:
成员变量:如果成员变量是被static修饰的,那么这个成员变量是属于类的,如果被别的修饰符修饰,这个成员变量是属于对象的。对象被存储在堆内存中。
局部变量:局部变量被存储在栈内存中。
3.从生存时间上:
成员变量:成员变量是属于对象的,和对象同生死。
局部变量:局部变量在他所在的函数或者代码块执行完毕后自动死亡。
4.从初值上:
成员变量:成员变量如果没有被赋予初值,那么会自动被赋予相对应的基本数据类型的初始值。
局部变量:局部变量不会被自动赋值。
一种情况例外:被 final 修饰的成员变量也必须显式地赋值
创建对象用new运算符,新建对象实例。一个实例对象可以被无数个引用对象引用。一个引用对象只能同时引用0或1个实例对象。
1.构造方法没有返回值,也不能用void修饰
2.名字必须与类同名,可以重载。
3.构造方法在创建对象实例时调用
子类继承父类的部分内容,构造父类的原因是要为子类的一系列活动做铺垫,帮助子类做初始化工作。
我们通常会自己写一个构造函数,当我们写了构造函数以后,java就不会为类创造一个无参构造函数了。
但是,当我们写一个子类继承这个父类的时候,如果没有用super(....)调用父类的构造方式的话,java会自动调用父类的无参构造函数。但是我们已经写了一个构造函数了,此时子类如果不写super(....),java就找不到一个父类的无参构造函数了,于是程序编译出错。为了避免这种错误,我们就敬长在类中定义一个什么都不做的构造函数。
原文:https://www.cnblogs.com/wangqianming12138/p/14644720.html