类和对象
在类中定义一个空的构造方法的作用
Java
程序在执行子类的构造方法之前,如果没有 super()
来指定调用父类的构造方法,则默认会调用父类中“没有参数的构造方法”。因此,如果父类中只定义来有参数的构造方法,而在子类的构造方法中又没有使用 super()
来指定调用父类的构造方法,则编译时将会发生错误,因为 Java
程序在父类中找不到没有参数的构造方法可供执行。为来解决上次问题,通常情况下会在父类中定义一个空的构造方法
成员变量和局部变量的区别?
- 从语法上:成员变量属于类本身持有,而局部变量则是在代码块或方法中定义的变量、或者是方法的参数;成员变量可以被
public
、private
、static
等修饰符修饰,而局部变量不能被访问控制修饰符及static
修饰符修饰;但两者都能被final
关键字修饰 - 从存储方法上:如果成员变量被 static 关键字修饰,则该成员变量属于类本身;若没有被 static 修饰,则该成员变量属于类的示例。引用类型对象存与堆内存中,而局部变量存在栈内存中
- 从生命周期上:成员变量是对象的一部分,它随着对象的创建而存在,整个生命周期跟随对象的生命周期;而局部变量的生命周期则跟随方法的调用,方法调用结束局部变量自动消失
创建对象用什么运算符?对象实体与对象引用的区别?
使用new
运算符创建对象。new
创建对象实例,对象实例存储在堆内存中;而对象引用则指向该对象实例,对象引用存储在栈内存中。一个对象引用可以指向 0 个或 1 个对象;一个对象实例可以有n
个引用指向它面向对象三大特征
封装
封装是指把一个对象的状态信息(属性)隐藏在对象内部,不允许外部对象直接访问对象的内部信息。但是提供一些可以被外部访问的方法来操作属性。继承
不同类型的对象,相互之间经常有一定数量的共同点。例如:小明、小红、小王几位同学,他们都是学生都拥有班级、学号等特性。将不同类型对象的共同点提取出来构成一个基础类型,新类型的定义可以在基础类型上增加新的数据或功能就是继承。继承是提高代码复用性的重要手段,合理使用继承可以有效提升开发效率继承是
Is
关系,而组合是Has
关系
多态
多态,顾名思义指多种状态,表示一个对象拥有多种状态,在编译时和运行时的类型不一致,程序运行期间才能确定对象的具体类型。