Java基础___面向对象之继承

继承的概述
     *A:继承的概念
        *a:继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系
        *b:在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,
            构建出来的新类被称作子类,现有类被称作父类
      *B:继承关系的子类特点  
        *a:子类会自动拥有父类所有非private修饰的属性和方法

 

继承的体系:

                                     动物(吃)
                                           |
------------------------------------------------------
|                                                               |
猫科动物(吃,胎生)                                   爬行动物(吃,卵生)
|                                                               |
------------------------------                            -------------------------      
|                                  |                            |                            |
猫(吃,抓老鼠,胎生)   虎(吃,领地,胎生)     蛇(吃,冬眠,卵生)    鳄鱼(吃,潜水,卵生)
        
        
        *a:动物体系是对每个具体事物共性的抽取,子类的共性抽取形成父类
        *b:父类:具有所有子类的共性内容
            子类:不但有共性还有自身特有的内容
        *c:整个继承体系,越向上越抽象,越向下越具体

 

继承的定义格式和使用
     *A:继承的格式
        class 子类 extends 父类 {}
     *B:继承的使用
        通过子类对象既可以调用自身的非private修饰的成员,也可以调用父类的非private修饰的成员

 

继承的好处
    *A:继承的好处:
        *1、继承的出现提高了代码的复用性,提高软件开发效率。
        *2、继承的出现让类与类之间产生了关系,提供了多态的前提。

 

继承的注意事项 
     *A:继承的注意事项 
         在Java中,类只支持单继承,不允许多继承,也就是说一个类只能有一个直接父类(儿子只能有个一个爹),但是一个父类可以被很多个子类继承(一个爹可以有很多个儿子)。同时允许多层继承(儿子类继承爸爸类,爸爸类继承爷爷类)。
举例:
             class A{} 
             class B{}
             class C extends A,B{}   // 错误! C类不可以同时继承A类和B类
      
             class A{}
             class B extends A{}
             class C extends A{}   // 正确!类B和类C都可以继承类A


             class A{}
             class B extends A{}   // 正确!类B继承类A,类B是类A的子类
             class C extends B{}   // 正确!类C继承类B,类C是类B的子类,同时也是类A的子类
在Java中,子类和父类是一种相对概念,也就是说一个类是某个类父类的同时,也可以是另一个类的子类。例如上面的这种情况中,B类是A类的子类,同时又是C类的父类。

 

继承后子类父类成员变量的特点 
     *A:子类的对象调用成员变量的时候,子类自己有,使用子类,子类自己没有调用的父类
     *B:当子父类中出现了同名成员变量,直接访问子类方法时遵循就近查找原则;在子类中需要访问父类中非私有成员变量时,需要使用super关键字,访问子类本身非私有成员变量使用this关键字。
        class Fu{
            //Fu中的成员变量。
            int num = 5;
        }
        
        class Zi extends Fu{
            //Zi中的成员变量
            int num = 6;
            void show(){   
                //子类的局部变量
                int num=7;                
                //直接访问,遵循就近查找原则
                System.out.println(num);    //7               
                //子父类中出现了同名的成员变量时
                //在子类中需要访问父类中非私有成员变量时,需要使用super关键字
                //访问父类中的num
                System.out.println("Fu num="+super.num);   //5   
                //访问子类中的num2
                System.out.println("Zi num2="+this.num);    //6
            }
        }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值