面向对象进阶-继承

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

就近原则:谁离我近我就访问谁,先在局部位置找,找不到然后在到本类成员位置到,如果本类成员位置找不到就到父类成员位置找,逐级往上找。

package oop.Extends.a03oopextendsdemo03;
public class Test {
    public static void main(String[] args) {
        Zi z = new Zi();
        z.show();
    }
}
    class Fu{
        String name="fu";
    }
    class Zi extends Fu{
        String name="zi";
        public void show(){
            String name="zishow";
            System.out.println(name);//zishow
            System.out.println(this.name);//zi
            System.out.println(super.name);//fu
        }
    }

练习:

package oop.Extends.a04oopextendsdemo04;
public class Test4 {
    public static void main(String[] args) {
      Zi z=new Zi();
      z.show();
    }
}
class Fu{
    String name="Fu";
    String hobby="喝茶";
}
class Zi extends Fu{
    String name="zi";
    String game="吃鸡";
    public void show(){
        //如何打印zi
        System.out.println(name);//从局部位置开始往上找
        //如何打印Fu
        System.out.println(super.name);//从本类成员位置开始往上找
        //如何打印喝茶
        System.out.println(super.hobby);//从父类成员位置开始往上找
        //如何打印吃鸡
        System.out.println(game);
    }
}

成员方法的访问特点

直接调用满足就近原则:谁离我近,我就调用谁

super调用,直接访问父类

方法重写

当父类的方法不能满足子类现在的需求时,需要进行方法重写。

书写格式:

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

@Override重写注解:

是放在重写后的方法上的,校验子类重写时语法是否正确。

package oop.Extends.a05oopextendsdemo05;
public class Test5 {
    public static void main(String[] args) {
OverseasStudent s=new OverseasStudent();
s.lunch();
    }
}
class Person{
    public void eat(){
        System.out.println("吃米饭,吃菜");
    }
    public void drink(){
        System.out.println("喝开水");
    }
}
class OverseasStudent extends Person{
    @Override
    public void eat(){
        System.out.println("吃意大利面");
    }
    @Override
    public void drink(){
        System.out.println("喝凉水");
    }
    public void lunch(){
        eat();
        drink();
        super.eat();
        super.drink();
    }
}

方法重写的注意事项和要求

1.重写方法的名称、形参列表必须与父类中的一致.

2.子类重写父类方法时,访问权限子类必须大于等于父类.

3.子类重写父类方法时,返回值类型必须小于等于父类.

4.建议:重写的方法尽量和父类保持一致.

5.只有被添加到虚方法表中的方法才能被重写.

package oop.Extends.a06oopextendsdemo06;
public class Dog {
    public void eat(){
        System.out.println("狗在吃狗粮");
    }
    public void drink(){
        System.out.println("狗在喝水");
    }
    public void lookHome(){
        System.out.println("狗在看家");
    }
}
package oop.Extends.a06oopextendsdemo06;
public class Husky extends Dog{
    public void breakHome(){
        System.out.println("哈士奇又在拆家了");
    }
}
package oop.Extends.a06oopextendsdemo06;
public class SharPei extends Dog{
    @Override
    public void eat(){
        super.eat();//吃狗粮
        System.out.println("沙皮狗在吃骨头");
    }
}
package oop.Extends.a06oopextendsdemo06;
public class ChineseDog extends Dog{
    @Override
    public void eat(){
        System.out.println("吃剩饭");
    }
}
package oop.Extends.a06oopextendsdemo06;
public class Test {
    public static void main(String[] args) {
       Husky h=new Husky();
       h.eat();
       h.drink();
       h.breakHome();
       h.lookHome();
       ChineseDog cd=new ChineseDog();
       cd.eat();
       cd.drink();
       cd.lookHome();
    }
}

相关推荐

  1. 面向对象-继承

    2023-12-30 03:32:02       58 阅读
  2. 面向对象--接口2

    2023-12-30 03:32:02       61 阅读
  3. 【Python(三)】——面向对象编程

    2023-12-30 03:32:02       53 阅读
  4. python高级(三)[面向对象]

    2023-12-30 03:32:02       26 阅读
  5. 面向对象基础练习

    2023-12-30 03:32:02       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-30 03:32:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-30 03:32:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-30 03:32:02       82 阅读
  4. Python语言-面向对象

    2023-12-30 03:32:02       91 阅读

热门阅读

  1. Linux模块编译

    2023-12-30 03:32:02       65 阅读
  2. C++三剑客之std::variant(一)

    2023-12-30 03:32:02       49 阅读
  3. install mpirun

    2023-12-30 03:32:02       69 阅读
  4. 基于SpringBoot的足球社区管理系统

    2023-12-30 03:32:02       64 阅读
  5. LeetCode 热题 100——1.两数之和

    2023-12-30 03:32:02       66 阅读
  6. web worker的介绍和使用(包含使用案例)

    2023-12-30 03:32:02       52 阅读
  7. CSS3学习之01

    2023-12-30 03:32:02       57 阅读
  8. 2023.12.29每日一题

    2023-12-30 03:32:02       60 阅读
  9. 【AI】人工智能爆发推进器之迁移学习

    2023-12-30 03:32:02       62 阅读
  10. LeetCode第1题 - 两数之和

    2023-12-30 03:32:02       60 阅读
  11. 第二百三十四回

    2023-12-30 03:32:02       56 阅读
  12. [动态规划]天平

    2023-12-30 03:32:02       53 阅读