Day27继承

继承

  1. 继承的格式:public class子类名 extends 父类名{}(public class Zi extends Fu{}),Fu是父类,也被称为基类,超类;Zi是子类,也被称为派生类。子类在继承中可以有父类的内容,还可以有自己特有的内容。

  2. 继承中变量访问特点:在子类方法中访问一个变量(1.在子类局部范围找 2.在子类成员范围找 3.父类成员范围找 4.如果都没有就报错,不考虑父类的父类)

  3. super用法和this关键字用法(this:代表本类对象引用 super:代表父类存储空间的标识,父类对象引用)

    关键字访问成员变量访问构造方法访问成员方法
    thisthis.成员变量,访问本来成员变量this(……)访问本类构造方法this.成员方法(……)访问本类成员方法
    supersuper.成员变量,访问父类成员变量super(……),访问父类构造方法super.成员方法(……)访问父类成员方法
    public class Zi extends Fu {
        //身高
        public int height = 175;
        //年龄
        public int age = 20;
    ​
        public void show(){
            int age = 30;
            System.out.println(age);
            System.out.println(height);
            //如果要访问本来成员变量age
            System.out.println(this.age);
            //如果要访问父类的成员变量age
            System.out.println(super.age);
        }
    }

//子类中所有的构造方法默认都会访问父类中无参的构造方法,子类会继承父类数据,可能还会使用父类数据,所以子类初始化之前,一定要先完成父类数据初始化(每个子类构造方法的第一条语句默认是super()),如果父类中没有无参构造方法,只有带参构造方法,就需要在父类中自己提供一个无参构造方法,或者使用super关键字取显示的调用父类的带参构造方法。

  1. 方法重写

    如果子类中出现了和父类中一摸一样的方法声明,子类需要父类功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,既有父类中功能,又添加了子类特有内容。(父类中私有private内容不能被子类重写),子类访问权限不能更低(public > 默认 > 私有private)

  2. java中类只支持单继承,不支持多继承;Java中类支持多层继承。

    public class Granddad{
        public void drink(){
            System.out.println("爷爷喝酒");
        }
    }
    ​
    public class Father extends Granddad{
        public void smoke(){
            System.out.println("爸爸抽烟");
        }
    }
    ​
    public class Son extends Father{}
    1. 案例猫狗继承动物类

      //动物类(父类)
      public class Animal {
              private String name;
              private int age;
      ​
          public Animal() {
          }
      ​
          public Animal(String name, int age) {
              this.name = name;
              this.age = age;
          }
      ​
          public String getName() {
              return name;
          }
      ​
          public void setName(String name) {
              this.name = name;
          }
      ​
          public int getAge() {
              return age;
          }
      ​
          public void setAge(int age) {
              this.age = age;
          }
      }
      ​
      //猫,子类
      public class Cat extends Animal {
          public Cat() {
          }
      ​
          public Cat(String name, int age) {
              super(name, age);
          }
          public void catMouse(){
              System.out.println("猫抓老鼠");
          }
      }
      //狗,子类
      public class Dog extends Animal{
          public Dog(){}
          public Dog(String name, int age){
              super(name,age);
          }
          public void lookDoor(){
              System.out.println("狗看门");
          }
      }
      //测试方法
      public class Test {
          public static void main(String[] args) {
              Cat c1 = new Cat();
              c1.setName("加菲猫");
              c1.setAge(3);
              System.out.println(c1.getName()+","+c1.getAge());
              c1.catMouse();
      ​
              Cat c2 = new Cat("快乐星猫",5);
              System.out.println(c2.getName()+","+c2.getAge());
              c2.catMouse();
      ​
              Dog d1 = new Dog();
              d1.setName("旺财");
              d1.setAge(4);
              System.out.println(d1.getName()+","+d1.getAge());
              d1.lookDoor();
      ​
              Dog d2 = new Dog("黑皇",6);
              System.out.println(d2.getName()+","+d2.getAge());
              d2.lookDoor();
      ​
          }
      }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值