继承、super与this总结

一、什么是继承?

继承是面向对象三大特征之一,可以让类与类之间产生父子的关系。

二、继承的格式

java中提供一个关键字extends,用这个关键字,我们可以让一个类和另一个类建立起继承关系。

public class Student extends Person {}

Student称为子类(派生类),Person称为父类(基类或超类)。

三、使用继承的好处

a、可以把多个子类中重复的代码抽取到父类里面,提高了代码的复用性。

b、子类可以在父类的基础上,增加其他的功能,是子类更强大。

四、什么时候使用继承?

当类与类之间,存在形同(共性)的内容并满足子类是父类中的一种,就可以考虑使用继承,来优化代码。

例如:有两个类,一个是类是学生,里面有姓名、年龄;另一个类是教师,里面也有名字、年龄,此时,就有必要做一个父类叫person,里面存这两个共同的属性名字、年龄。

五、继承后子类的特点

a、子类可以得到父类的属性和行为,子类可以使用。

b、子类可以在父类的基础上新增其他的功能,使子类更强大。

六、继承的特点

java只支持单继承,不支持多继承,但支持多层继承。

单继承:一个子类只能继承一个父类

不支持多继承:子类不能同时继承多个父类

支持多层继承:子类A继承父类B ,父类B 可以继承父类C

注:每一个类都直接或间接的继承于Object

七、子类可以继承父类中的哪些内容?

构造方法非私有  不能private  不能
成员变量非私有   能private   能
成员方法非私有   能private   不能

八、继承中成员变量、成员方法的访问特点

1.继承中成员变量的访问特点

this调用:就近原则      super调用:直接找父类

  public class Fu{
        String name = "fu";
    }
    public class Zi extends Fu{
        String name = "zi";
        public void Zi1(){
            String name = "zi1";
            System.out.println(name);
            System.out.println(this.name);
            System.out.println(super.name);
        }
    }


结果:

zi1
zi
fu

2.继承中成员方法的访问特点

this调用:就近原则      super调用:直接找父类

class Person{
        public void eat (){
            System.out.println("吃大米饭");
        }
        public void drink (){
            System.out.println("喝茶π");
        }
    }
    
    class Stufent extends Person{
        public void wufan(){
            //先看本类是否有 ,若没有,再看父类
            this.eat();
            this.drink();
            //直接调用父类
            super.eat();
            super.drink();
        }
    }

3.什么是方法重写?

在继承体系中,子类出现了和父类中一模一样的方法声明,我们就称子类的这个方法是重写的方法。

4.方法重写建议加上哪个注解,有什么好处?

@Override注解可以校验重写是否正确,同时可读性好。

5.重写方法有哪些基本要求?

a、子类重写的方法尽量跟父类中的方法保持一致。

b、只有虚方法表里面的方法可以被重写。

实例:

 class Person{
        public void eat (){
            System.out.println("吃大米饭");
        }
        public void drink (){
            System.out.println("喝茶π");
        }
    }
    class Liuxueshegn extends Person{
        public void wufan(){
            this.eat();
            this.drink();
        }
        @Override
        public void eat (){
            System.out.println("吃意面");
        }
        @Override
        public void drink (){
            System.out.println("喝咖啡");
        }
    }

九、继承中构造方法的访问特点是什么?

a、子类不能继承父类的构造方法,但是可以通过super调用;

b、子类构造方法的第一行,有一个默认的super();

c、默认先访问父类中无参的构造方法,再执行自己;

d、如果想要方法里有父类的有参构造,必须手写书写。

十、this、super使用总结

a、this:理解为一个变量,表示当前方法调用者的地址值

b、super:代表父类存储空间

关键字访问成员变量访问成员方法访问构造方法
this

this.成员变量

访问本类成员变量

this.成员方法(...)

访问本类成员方法

this(...)

访问本类构造方法

super

super.成员变量

访问父类成员变量

super.成员方法(...)

访问父类成员方法

super(...)

访问父类构造方法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值