继承的基础知识

继承概述
多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类就行了。
通过extends关键字可以实现类与类的继承
class子类名 extends 父类名{}


有了继承以后,我们定义一个类的时候,可以在一个已经存在的类的基础上,还可以定义自己的新成员。

父类也可以称为基类、超类
子类也可以称为派生类
继承的格式class Fu {}
class zi extends Fu {}


通过继承可以提高代码的复用性,代码的维护性、让类与类之间产生了关系,是多态的前提。
类与类之间产生了关系体现了类的耦合性增强。
开发的原则:低耦合,高内聚
耦合:类与类的关系
内聚:就是自己完成某件事的能力
java中继承的特点
java只支持单继承,不支持多继承(一个类只能有一个父 类,不可以有多个父类)
但是有些语言是支持多继承的,格式:extends 类1,类2……..
java支持多层继承(继承体系)class A{}
class B extends A{}
class C extends B{}


java中继承的注意事项
子类只能继承父类所有非私有的成员(成员方法,成员变量) 这里也体现了继承的弊端:打破了封装性
子类不能继承父类的构造方法,但可以通过super()关键字去访问父类的构造方法
不要为了部分功能而去继承

class Father {
    public int num=10;
}

class son extends Father {
    public int num=20;
    public void show() {
        int num=30;
        System.out.println(num);
        System.out.println(this.num);
        System.out.println(super.num);
    }
}

class Exx {
    public static void main(String[] args) {
            son s=new son();
            s.show();
    }
}
//打印的结果;
30
20
10

this和super的区别?
this代表本类对应的引用,super代表父类存储空间的标识(可以理解为父类引用,可以操作父类的成员)


    **如何用?**
    A:调用成员变量
                    this.成员变量   通用本类的成员变量
                    super.成员变量   通用父类的成员变量
  B:调用构造方法
                  this(....)  调用本类的构造方法
                  super(...) 调用父类的构造方法
  C:调用成员方法
                    this.成员方法  调用本类的成员方法
                    super.成员方法   调用父类的成员方法
class Father {
        public Father() {
        System.out.println("father无参数");
        }
        public Father(int a) {
        System.out.println("father有参数");
        }
}
class son extends Father {
        public son () {
            System.out.println("son无参数");
        }
        public son (int a) {
            System.out.println("son有参数");
        }
}

class exxx {
        public static void main(String[] args) {
        son s=new son();
        System.out.println("---------");
        son ss=new son(2);
        }
}
//打印结果:
//father无参数
//son无参数
//---------
//father无参数
//son有参数

子类中所有的构造方法默认都会访问父类中空参数的构造方法。
因为子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定会先完成父类数据的初始化。
每一个构造方法的第一条语句默认都是:super()
继承中构造方法的关系
A:子类中所有的构造方法默认都会访问父类中空参数的构造方法。

如果父类没有无参构造方法,那么子类的构造方法会出现错误!!!!
解决方法:
A:在父类中加一个无参构造方法
B:通过使用super关键字去显示的调用父类的带参构造方法
C:子类通过this去调用本类的其他构造方法
子类中一定要有一个去访问父类的构造方法,否则父类的数据就没有初始化。
注意事项:this(…) 或者super(…)必须出现在第一条语句上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰河家园

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值