概念
继承的基本思想是,基于已有的类创建新的类,继承已存在的类就是复用这些类的方法(子承父业)
语法:java中表现继承的关系需要借助关键字extends
继承格式
public class 子类名 extends 父类名(){}
范例
public class Zi extends Fu(){}
继承的注意事项
子类将继承父类的成员变量和成员方法
子类继承父类之后,需要添加自己特有的成员,体现出与基类的不同
java中类只支持单继承,不支持多继承
java中类支持多层继承(或者叫继承具有传递性)
继承的好处
提高了代码的复用性子类通过继承可以直接使用父类中的属性和方法(多个类相同的成员可以放到同一个类中)
提高了代码的维护性(如果方法的代码需要修改,修改一处即可)
继承的关系体现
继承体现的是类之间的一种"is-a"关系
继承体现的是类之间的一种"is-a"关系,A is-a B关系成立,则A和B具有继承关系A继承B,则A是子类,B是父类A extends B
继承是一种机制,通过继承可以使得子类直接使用父类中的属性和方法
supersuper关键字的用法和this关键字的用法相似
this:代表调用该方法的对象(一般我们是在当前类中使用this,所以我们常说this代表本类对象的引用)
super:代表父类存储空间的标识(可以理解为父类对象引用)
super调用父类的构造方法,必须在构造方法的第一个
super必须出现在子类的方法或者构造方法中
super和this不能同时调用构造方法
常用几个方法
| 关键字 | 访问成员变量 | 访问构造方法 | 访问成员方法 |
|---|---|---|---|
| this | this.成员变量 访问本类成员变量 | this.(...) 访问本类构造方法 | this.成员方法(...) 访问本类成员方法 |
| super | super.成员变量 访问父类成员变量 | super(...) 访问父类构造方法 | super.成员方法(...) 访问父类成员方法 |
final
final关键字可以用来修饰变量,成员方法以及类
修饰变量或字段,表示常量(不能被赋值)
final int a = 10; a = 20; //编译出错
修饰方法,表示该方法是最终发放(不能被重写)
public class Fu{
public final void method(){
...
}
}
修饰类,表明该类是最终类,不能被继承
final public class Fu{}
public class Zi extends Fu{} //编译出错
static
是一个静态修饰符,表示静态的含义,可以修饰方法,成员变量
特点 static修饰的成员被所有的对象所共享
static修饰的数据是共享数据,对象中的存储的是特有数据
可以通过类名调用,也可以通过对象名调用,推荐使用类名调用
工具类编写工具类步骤
将构造方法私有
将成员方法加上static
package com.xiaoquan.gongJu;
public class MyRandomUtils {
// 构造私有方法
private MyRandomUtils(){
System.out.println("工具类");
}
public static int getRandom(int[] arr){
int max = arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
}
main
public static void main(String[] args){}
| 说明 | |
|---|---|
| pubilc | 被jvm调用,访问权限足够大 |
| static | 被jvm调用,不用创建对象,直接类名访问 |
| void | 被jvm调用,不需要给jvm返回值 |
| main | 一个通用的名称,虽然不是关键字,但是被jvm识别 |
| String[] args | 以前用于接收键盘录入的 |
概念
子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效果,也称位重写.声明不变,重新实现
方法重写的应用场景
当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样既沿袭了父类的功能,又定义了子类持有的内容
注意:方法重写除方法体以及方法的修饰符外必须完全相同(方法名,参数列表必须相同)
@Override
是一个注解
可以帮助我们检查重写方法的方法声明的正确性
父类
public class Fu {
public void test(String name){
System.out.println(name + "用按键手机");
}
}
子类
public class Zi extends Fu{
@Override
public void test(String name){
System.out.println(name + "换成触屏手机");
super.test(name);
}
}
测试类
public class Demo {
public static void main(String[] args) {
Zi z = new Zi();
z.test("小权");
}
}
修饰符
| 修饰符 | 说明 |
|---|---|
| private(私有) | 在本类中使用 |
| 默认 | 在本包中使用 |
| protected(保护) | 在其他包的子类中使用 |
| public(公开) | 在任何地方使用 |
这里我就不演示了 欢迎编写 可联系博主添加链接
欢迎大牛指导错误
欢迎一起学习的小白程序员



