java基础七
十二:关键字和API
1this和super关键字
1.this和super的意义
this:当前对象
super 引用父类声明的成员
无论this和super都是和对象有关的
Cat mi = new Cat(); // mi.a = 10; // this 当前操作的对象 mi // mi.eat(); // mi.this(); // super 当前类的父类
2.this和super的使用格式
-
this
-
this.成员变量:表示当前对象的某个成员变量,而不是局部变量
-
this.成员方法:表示当前对象的某个成员方法,完全可以省略this.
-
this()或this(实参列表):调用另一个构造器协助当前对象的实例化,只能在构造器首行,只会找本类的构造器,找不到就报错
-
-
super
-
super.成员变量:表示当前对象的某个成员变量,该成员变量在父类中声明的
-
super.成员方法:表示当前对象的某个成员方法,该成员方法在父类中声明的
-
super()或super(实参列表):调用父类的构造器协助当前对象的实例化,只能在构造器首行,只会找直接父类的对应构造器,找不到就报错
-
3.为了避免子类和父类声明重名的成员变量
因为,子类会继承父类所有的成员变量,所以:
-
如果重名的成员变量表示相同的意义,就无需重复声明
-
如果重名的成员变量表示不同的意义,会引起歧义
4.解决成员变量重名问题
-
如果实例变量与局部变量重名,可以在实例变量前面加this.进行区别
-
如果子类实例变量和父类实例变量重名,并且父类的该实例变量在子类仍然可见,在子类中要访问父类声明的实例变量需要在父类实例变量前加super.,否则默认访问的是子类自己声明的实例变量
-
如果父子类实例变量没有重名,只要权限修饰符允许,在子类中完全可以直接访问父类中声明的实例变量,也可以用this.实例访问,也可以用super.实例变量访问
2native关键字
native:本地的 原生的
native的语法
native只能修饰方法,表示这个方法的方法体代码不是用Java语言实现的,而是由C/C++语言编写的。但是对于Java程序员来说,可以当做Java的方法一样去正常调用它,或者子类重写它。
简单来说就是调取本地存储的其他语言文件
3final关键字
final:最终的 不可更改的
int a;
public final void add(){
System.out.println("1145");
}
只要不修改随便用
6.5.4Obiect根父类
类 java.lang.Object是类层次结构的根类,即所有类的父类。每个类都使用 Object 作为超类。
-
Object类型的变量与除Object以外的任意引用数据类型的对象都多态引用
-
所有对象(包括数组)都实现这个类的方法。
-
如果一个类没有特别指定父类,那么默认则继承自Object类。例如:
public class MyClass /*extends Object*/ {
// ...
}
2.Object类的其中5个方法
API接口
Java API是一本程序员的字典 ,是JDK中提供给我们使用的类的说明文档。所以我们可以通过查询API的方式,来学习Java提供的类,并得知如何使用它们。在API文档中是无法得知这些类具体是如何实现的,如果要查看具体实现代码,那么我们需要查看src源码
1.toString()
默认情况下,toString()返回的是“对象的运行时类型 @ 对象的hashCode值的十六进制形式"
-
通常是建议重写
-
如果我们直接System.out.println(对象),默认会自动调用这个对象的toString()
public class student {
private String name;
private int shengao;
private int kg;
private Stering xingbie;
@Override
public String toString() {
return 学生基本信息{" +
"姓名='" + name + '\'' +
", 性别='" + xingbie+
", 身高=" + shengao+"cm" +
", 体重=" + kg +"kg"
+ '\'' +
'}';
}
}
(2)getClass()
获取对象的运行时类型
(3)equals()
用于判断当前对象this与指定对象obj是否“相等”
①默认情况下,equals方法的实现等价于与“==”,比较的是对象的地址值
②我们可以选择重写,重写有些要求:
A:
B:如果重写equals,那么一定要遵循如下几个原则:
a:自反性:x.equals(x)返回true
b:传递性:x.equals(y)为true, y.equals(z)为true,然后x.equals(z)也应该为true
c:一致性:只要参与equals比较的属性值没有修改,那么无论何时调用结果应该一致
d:对称性:x.equals(y)与y.equals(x)结果应该一样
e:非空对象与null的equals一定是false
(4)hashCode()
返回每个对象的hash值
如果重写equals,那么通常会一起重写hashCode()方法
{对象.hashCode()
}
当前对象的十六进制代码
3.标准JavaBean
JavaBean 是 Java语言编写类的一种标准规范。符合JavaBean 的类,要求:
(1)类必须是具体的和公共的,
(2)并且具有无参数的构造方法,
(3)成员变量私有化,并提供用来操作成员变量的set 和get 方法。
(4)重写toString方法
一个标准的JavaBean实例:
public class student {
private String name;
private int shengao;
private int kg;
private String xingbie;
public student() {
}
public student(String name, int shengao, int kg, String xingbie) {
this.name = name;
this.shengao = shengao;
this.kg = kg;
this.xingbie = xingbie;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getShengao() {
return shengao;
}
public void setShengao(int shengao) {
this.shengao = shengao;
}
public int getKg() {
return kg;
}
public void setKg(int kg) {
this.kg = kg;
}
public String getXingbie() {
return xingbie;
}
public void setXingbie(String xingbie) {
this.xingbie = xingbie;
}
@Override
public String toString() {
return "学生基本信息{" +
"姓名='" + name + '\'' +
", 性别='" + xingbie+
", 身高=" + shengao+"cm" +
", 体重=" + kg +"kg"
+ '\'' +
'}';
}
测试类:
public static void main(String[] args) {
student add = new student();
add.setName("小王");
add.setXingbie("男");
add.setShengao(190);
add.setKg(60);
System.out.println(add);
}
更多推荐




所有评论(0)