java基础之继承,super关键字以及方法重写与方法重载

目录

1:继承的概述

2:继承的优缺点

3:继承的特点

5:注意事项

6:继承中成员变量的关系

 7:继承与成员方法的关系

 8:super关键字

1:概念

2:this与super的区别?

3:this与super的用法

9:方法重写与重载

1:方法的重写

2:方法的重载


1:继承的概述

多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。

通过extends关键字可以实现类与类的继承

class 子类名 extends 父类名 {}  

2:继承的优缺点

1:继承的好处

提高了代码的复用性

多个类相同的成员可以放到同一个类中 提高了代码的维护性

如果功能的代码需要修改,修改一处即可 让类与类之间产生了关系,是多态的前提

2:弊端:类的耦合性很强

耦合是指类与类之间的关系

内聚就是类自己完成某件事的能力

开发的原则是低耦合高内聚

3:继承的特点

Java只支持单继承,不支持多继承。

一个类只能有一个父类,不可以有多个父类。

例如:class A extens c extens b{}//错误

支持多层继承(继承体系)

class A{}

class B extends A{}

class C extends B{}

5:注意事项

子类只能继承父类所有非私有的成员(成员方法和成员变量) (其实这也体现了继承的另一个弊端:打破了封装性)

子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法。( 不要为了部分功能而去继承)

我们到底在什么时候使用继承呢? (继承中类之间体现的是:”is a”的关系。)

6:继承中成员变量的关系

首先在子类局部范围找

然后在子类成员范围找

最后在父类成员范围找(肯定不能访问到父类局部范围)

如果还是没有就报错。

例如:

class Fu{
    int a=10;
    int b=20;

}
class Zi extends  Fu{
    int a=30;
    public void show(){
        System.out.println(a);//调用自己的成员变量
        System.out.println(b);//调用父类的成员变量
    }

}
public class Text3 {
    public static void main(String[] args) {
        Zi zi = new Zi();//创建子类对象
        zi.show();//调用子类show方法

    }
}

 7:继承与成员方法的关系

1、子类的成员方法与父类的成员方法不一样,该访问谁就访问谁

2、子类的成员方法与父类的成员方法一样,指的是方法名一样

1)先找子类中,看有没有这个方法,如果有,就直接调用

2)如果子类中没有这个方法,去父类找,如果有,就调用

3)如果连父类都没有这个方法,报错

class Fu{

    public int xiangJia(int a,int b){//父类的成员方法返回两个数的和
        return a+b;
    }

}
class Zi extends  Fu{
   public int xiangJian(int a, int b){//子类的成员方法返回的是两个数差
       return a-b;
   }
   public int xiangJia(int a,int b){//子类与父类相同的方法,返回的是两个数和的两倍
       return (a+b)*2;
   }


}
public class Text3 {
    public static void main(String[] args) {
        Zi zi = new Zi();//创建子类对象
        int a=10;
        int b=20;
        int i = zi.xiangJia(a, b);//调用方法此时子类自己的成员方法
        System.out.println(i);
        int i1 = zi.xiangJian(a, b);//调用与父类同名的方法
        System.out.println(i1);



    }
}

 8:super关键字

1:概念

super代表是父类存储空间的标识(引用)(可以操作父类的成员)

2:this与super的区别?

this代表的是当前对象的引用

super代表是父类存储空间的标识(引用)(可以操作父类的成员)

3:this与super的用法

1、调用成员变量:

this.成员变量 调用的是本类中的成员变量

super.成员变量 调用的是父类的成员变量

2、访问构造方法(马上说到子父类构造方法的问题来说)

this(...) 调用本类中构造方法 super(...) 调用父类中构造方法

3、访问成员方法

this.成员方法 调用本类的成员方法

super.成员方法 调用父类的成员方法 */

class Fu{
    int a=10;

    public Fu() {
        System.out.println("这是父类的构造方法");
    }
    public void fu(){
        System.out.println("这是父类的成员方法");
    }
}
class Zi extends  Fu{
    int a=20;
    public Zi() {
        System.out.println("这是子类的构造方法");
    }
     public void zi(){
         System.out.println("这是子类的成员方法");
     }
    public void show(){
        super.fu();//调用父类的成员方法
        this.zi();//调用子类的成员方法
       int a=0;
       System.out.println(a);//方法本身的变量局部变量
       System.out.println(this.a);//调用成员变量
       System.out.println(super.a);//调用父类的成员方法
   }


}
public class Text3 {
    public static void main(String[] args) {
        Zi zi = new Zi();//创建对象
        zi.show();//调用方法


    }
}

9:方法重写与重载

1:方法的重写

override 子类中出现了和父类中一模一样的方法声明,叫做重写,也被叫做方法的覆盖,方法的复写

2:方法的重载

overload 本类中出现了方法名一样,参数列表不一样的方法,与返回值无关的方法,叫重载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值