Java面向对象知识点总结01

继承

在程序中,让一个类去继承另一个类。
比如:Cat类继承Animal类
Cat类是Animal类的子类,又称 派生类,Animal类是Cat类的父类,又称 超类 或 基类。
子类可以直接拥有父类的成员,但是父类的私有成员除外。

  1. 继承的语法格式
    继承使用 extends 关键字
class Animal{}
class Cat extends Animal {} //Cat类继承Animal类
  1. 继承的好处
    可以减少代码量
    提高代码的复用性
    继承的存在,造就了面向对象的最后一个特征 多态

  2. 继承后成员变量的特点
    子类和父类的成员变量名相同:
    子类在调用成员变量时,子类自己有,调用自己的成员变量,子类没有,调用父类的成员变量

  3. 继承后成员方法的特点
    子类自动拥有父类中的方法,有时需要子类更改父类中的方法,即对父类方法的 重写
    在子类中重写的方法需要和父类被重写的方法具有相同的方法名、参数列表和返回值类型。
    通过方法的重写对程序已有功能进行扩展

  4. 方法重写的权限问题
    方法重写需要考虑权限的.要保证子类方法的权限要大于或者等于父类方法权限
    父类的方法权限是public :

class Fu{
      public void print(){}
  }
  class Zi extends Fu{
      public void print(){} //正确
      protected void print(){} //错误,权限降低
      void print(){} //错误,权限降低
      private void print(){} //错误,权限降低
  }

父类的方法权限是protected:

class Fu{
      protected void print(){}
  }
  
  class Zi extends Fu{
      public void print(){} //正确
      protected void print(){} //正确
      void print(){} //错误,权限降低
      private void print(){} //错误,权限降低

父类方法权限是默认:

class Fu{
       void print(){}
  }
  
  class Zi extends Fu{
      public void print(){} //正确
      protected void print(){} //正确
      void print(){} //正确
      private void print(){} //错误,权限降低

如果父类的方法权限是private, 子类不知道该方法的存在,没有继承的说法

  1. super关键字
    在子类中调用父类的成员,使用super关键字
    super.变量 调用父的成员变量
    super.方法() 调用的是父类的成员方法
  2. 继承后构造方法特点
    子类的构造方法中,第一行存在隐式代码 (写不写都存在),代码是super(); 调用父类的无参数构造方法.
    子类的构造方法,无论重载多少个,第一行默认都是super();
    父类没有无参数构造方法,子类的构造方法中应有super(参数列表);
    父类中存在多个构造方法,子类的构造方法只要调用到其中的一个即可
public class Fu  {
    /**
     * 父类的构造方法
     * 加上参数,有参数的构造
     */
    public Fu(int a){
        System.out.println("父类构造方法" + a);
    }

    public Fu(String s){
        System.out.println("父类构造方法" + s);
    }
}

public class Zi extends Fu {

    public Zi(){
        //调用父类的无参数构造方法
        //父类中没有无参数构造
        //传递相应的参数
        super(7);
    }

    public Zi(String s){
        //调用父类构造方法,保证调用其中一个
        super("字符串");
    }
}
  1. 继承的特点
    单继承,多层继承
    单继承:一个子类只能拥有一个父类,不允许一个类同时继承多个类
class B{}
class C{}
class A extends B,C{} //不允许的行为

多层继承:

class C{}
class A extends B{}
class B extends C{}

A类可以同时拥有B类和C类的成员, B类只能拥有C类的成员
A类中通过super调用的是B类成员,如果B类没有成员,调用C类成员
Java中所有的类都是Object类的子类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值