💞 写出this和super的用法。
This:由于Java中成员变量名与局部变量名重复时,成员变量就会失效而不报错,为避免此种情况,就有了this关键字。在成员变量与局部变量相同时,this.a其实就是调用本类的成员变量a;若没有用this,就是a1=a,只是将方法中局部变量a的值赋给a1。而a2=this.a就是将成员变量a的值赋给a2。(调用成员变量)
Super:1.调用父类的对象,当子类需要调用父类属性时,可以使用super.变量 调用父类;2.调用父类的构造方法,当子类需要使用父类的构造方法时,可以不用重新定义而使用super直接调用父类构造方法。
Super调用父类的构造方法一般为:
Public 类名(父类构造方法所有属性,新加属性1,新加属性2,…){
Super(按顺序写入父类构造方法中所有变量名用“,”隔开);
this.新加属性1 = 新加属性1;
this.新加属性2 = 新加属性2;
……
}
在继承父类构造方法的同时也可以添加子类本身属性共同构成构造方法。
💞 写出static和final的用法
final:修饰的成员变量表示常量,修饰的类不能被继承,修饰的方法不能被被重写。
static:表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态ststic代码块,但是Java语言中没有全局变量的概念。
注:static final用来修饰成员变量和成员方法,可以简单的理解为“全局常量”。
💞 为什么要重写toString()方法
若不重写toString,输出的则是:包名.类名.@.hash码值,是地址;若重写之后则输出对象本身的值.
💞 为什么要重写equals()方法
“equals”表示比较两个对象,若不重写,输出的是对象的地址,若重写之后则输出对象本身的值。
💞 写出重载与重写的区别
重载:是让类以统一的方式,处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载的时候,方法名要一样,但参数类型和个数不一样,返回值类型可以相同也可以不同。
重写:是当父类的方法不能满足子类需求的时候,子类需要重写这个方法达到所需的功能。
方法的重载发生在同一个类中,方法的从写发生在不同的类中。
💞 请写出Java基本数据类型及对应的封装类型,并说明封装类的作用
byte----> Byte
short----> Short
int---->Integer
long----> Long
double----> Double
float----> Float
boolean----> Boolean
char----> Characater
封装类的作用:
(1)Java中封装的实质就是将类的状态信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。
(2)封装反映了事物的相对独立性,有效避免了外部错误对此对象的影响,并且能够对对象使用者由于大意产生的错误起到预防作用。
(3)面向对象编程提倡对象之间实现松耦合关系。
(4)封装的好处在于隐藏类的实现细节,让使用者只能通过程序员规定的方法来访问数据,可以方便地加入存取控制修饰符,来限制不合理操作。
(5)松耦合就是指尽量减少对象之间的关联性,以降低它们之间的复杂性和依赖性。
💞 写出“==”和equals的区别
“==”比较的是基本数据类型;比较的是值。
“equals”比较的是引用数据类型;比较的地址。
💞 Java对内存的划分分为几类
划分一:运行时数据区域; 程序计数器; Java虚拟机栈; 本地方法栈; 堆; 方法区;运行时常量池; 对象访问。
划分二:栈区、堆区、静态区、代码区。
💞 堆和栈的区别
堆:存放的是引用数据类型;
栈: 存放的是基本数据类型;容量小、速度快、适合存放小型数据。
💞 static关键字是什么意思?Java中是否可以覆盖一个private或者是static的方法?
如果一个类的变量或者方法前面有static修饰,那么表明这个方法或者变量属于这个类,也就是说可以在不创建对象的情况下直接使用。
当父类的方法被private修饰时,表明该方法为父类私有,对其他任何类都是不可见的,因此如果子类定了一个与父类一样的方法,这对于子类来说相当于是一个新的私有方法,且如果要进行向上转型,然后去调用该“覆盖方法”,会产生编译错误。
static方法时编译时静态绑定的,属于类,而覆盖是运行时动态绑定的(动态绑定的多态),因此不能覆盖。
💞 Java支持多继承么
在java中是单继承的,也就是说一个类只能继承一个父类。
java中实现多继承有两种方式,一是接口,而是内部类.