Java-面向对象-继承

extends 继承

概念

继承的基本思想是,基于已有的类创建新的类,继承已存在的类就是复用这些类的方法(子承父业)

语法: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

继承是一种机制,通过继承可以使得子类直接使用父类中的属性和方法

super

super关键字的用法和this关键字的用法相似

this:代表调用该方法的对象(一般我们是在当前类中使用this,所以我们常说this代表本类对象的引用)

super:代表父类存储空间的标识(可以理解为父类对象引用)

super调用父类的构造方法,必须在构造方法的第一个

super必须出现在子类的方法或者构造方法中

super和this不能同时调用构造方法

常用几个方法

关键字访问成员变量访问构造方法访问成员方法
thisthis.成员变量 访问本类成员变量this.(...) 访问本类构造方法this.成员方法(...) 访问本类成员方法
supersuper.成员变量 访问父类成员变量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;
/**
 * 这是对数组进行操作的工具类
 * 
 * @author xiaoquan
 * @version 0.1
 */
​
public class MyRandomUtils {
​
    // 构造私有方法
    private MyRandomUtils(){
        System.out.println("工具类");
    }
​
    /**
     * 
     * @param arr  参数是一个int数组
     * @return 返回数组中的最大数
     */
    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(公开)在任何地方使用

jar包和帮助文档

这里我就不演示了 欢迎编写 可联系博主添加链接

欢迎大牛指导错误

欢迎一起学习的小白程序员

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值