第九篇
继承:java继承是定义一种的新的类型,从已有的类中吸收成员变量和方法,新的类型可以添加新的方法和成员变量。
这种方式可以提高代码的复用性,缩短开发周期,减少开发费用。
构造器:子类不能继承父类的构造器,使用super(有参传参)只能调用父类的构造器。
子类中的构造器,至少有一个调用了父类的构造器。
super(有参传参)与this(有参传参),不能共存。而且只能放在首行首句。
方法的重写:子类可以重新编写继承父类的方法。
(1)方法名相同,参数列表相同
(2)返回值类型可以相同,也可以是父类方法的返回值类型的子类型
(3)修饰词可以不变,或者可以比父类的修饰权限更大,父类型的变量引用子类型的对象
变量能调用的方法与成员变量
方法:
编译期: 变量只能调用出本类型中的方法
运行期: 变量调用出方法执行逻辑与对象的类型有关
成员变量:变量调用出的成员变量一定是本类型中的成员变量
如:Person p = new Student();
p.name------>super.name
p.age ------>super.age
//p.score---->编译错误,p类型中没有成员变量score
Object:是所有引用类型的顶级父类,系统都会默认使引用类型extends Object.
此类中提供了常用的方法:
1:toString():在Object中,返回的是类全名@HashCode值, 即对象的内存堆中的位置信息
类有类名和类全名之分:
类名:即最短的名称
类全名:从包名开始写的名称
如: String 是类名
java.lang.String是类全名
此方法会在输出变量时,或引用变量进行拼接时默认调用。
而查看地址信息,通常没有必要,我们通常要查看的是对象的成员变量信息
因此我们都需要重写toString()方法,用于查看对象的详情
格式:
"[成员变量1="+成员变量1+",成员变量2="+成员变量2+"]"
2:equals(Object obj)
Object类型中的此方法中的逻辑是比较调用者this与形参obj的地址信息是否相等。
简单说成:比较this与obj是不是同一个对象
所以在定义类型时,继承过来的equals方法 我们要重写。
重写规则:
(1) 查看传进来的obj是不是null
if(obj==null){
return false;
}
(2): 查看传进来的obj是不是this.
if(obj==this){
return true;
}
(3) 查看穿进来的obj是不是本类型
if(obj.getClass()!=this.getClass()){
return false;
}
可以改成
if(!(obj instanceof Person)){
return false;
}
instanceof关键字:作用是判断引用变量指向的对象是否属于某一类型
语法:boolean f = 变量名 instanceof 类型名
package: 包.
作用:用于管理源文件,区分类全名
命名规则:域名后缀.域名.项目名.模块名
声明位置:在源文件的首行首句。
类全名:从包开始写起的名称
常用的包:
java.lang.*,因为里面的类型非常常用。因此不需要导包
java.util.*,此包下封装了很多常用的工具类
java.io.*,此包下封装了io流的类型
java.net.*,此包下封装很多关于网络的多种类型
import: 导包关键字:在class之上,package之下。
用于声明类的类全名,在逻辑中就可以使用短的类名。
优点: 可以减少代码的书写。
访问权限控制修饰词
private,protected,public,默认的(default)
修饰类时:
外部类:可以使用public和默认的
内部类:可以使用public,protected,默认的,private
修饰成员变量:四个都可以进行修饰,但可见性不一样
本类中 同包下 不同包子类中 其他
public true true true true
protected true true true
default true true
private true
在实际开发中,成员变量要尽可能的设置成不可见,好处是提高代码的安全性。即用private修饰
--------------------------------------------------------------------
为了在其他类中可以对成员变量进行重新设置值或者获取值,我们可以定义相应成员变量的共有方法来进行操作。
public void setName(String name){
this.name = name;//修饰成员变量的值
}
public String getName(){
return name;
}
修饰方法:与修饰成员变量的可见性一致。
方法的重写:子类不能重写父类的私有方法
修饰词final:最终的,最后的
(1)修饰类:被final修饰的,不能再有子类了。
(2)a.修饰成员变量:可以直接初始化,也可以在构造器中初始化,不能再其他 任何地方再次赋值
b.修饰局部变量:只能初始化一次。
(3)修饰方法:被final修饰的方法,不能再子类中重写
常量:因为常量是一些特殊值,我们可以定义成final, public,static进行修饰。