很多时候如果我们需要写很多个具有相同属性、方法的类。写起来就会很重复做很多的工作。这时候我们可以用到继承。

1、继承是什么。

继承是让一个类(子类)拥有另一个类(父类)的所有属性、方法。。

  格式:

    public class 子类名 extends 父类名{ }

  这里呢,我们需要用到一个关键词 :extends 。

让我们举例一下现实生活中 一些继承关系的类。

  (父类):水果  

   (子类): 苹果  、雪梨 、砂糖橘 

  那么父类有什么属性和方法呢 。 

    水果:

      属性:名称、颜色、重量。

      方法:吃。

//定义一个水果的类
public class Fruits{
      //名称
        public String name;
      //颜色
        public String colour;
      //重量
        public int weight;

    //定义一个吃水果的方法
    public void eat(){
         //输出  这是吃水果的办法
          System.out.println("这是吃水果的办法");
  }
}

 然后我们创建一个子类(苹果)。

public class Apple extends fruits {
    
    //主方法
    public static void main (String[]args){
    //创建苹果类的对象
    Apple A=new Apple();
    //调用方法
    //调用取水果名字的方法
    A.Fname("苹果");
    //调用吃水果的方法
    A.eat();
    
    
    }
}

然后运行一下

这是吃水果的办法,水果名是苹果

2、继承中方法的重写 。

  重写就是重新定义(父)类的方法。

  需要注意的是1、必须有继承关系。

        2、方法的声明,除了访问权限氪扩大,其他必须一致。

public class Apple extends fruits {
    //方法的重写
    public void eat(){
        //输出  这是吃水果的办法
        System.out.println("这是吃苹果的办法,水果名是"+name);
    }
    //主方法
    public static void main (String[]args){
    //创建苹果类的对象
    Apple A=new Apple();
    //调用方法
    //调用取水果名字的方法
    A.Fname("苹果");
    //调用吃水果的方法
    A.eat();
    }
}

然后运行,就可以看见方法就变成了我们重写后的方法。

这是吃苹果的办法,水果名是苹果

自动转型 :

3、自动转型:

      子类对象可以自动的变为父类对象。

      自动转型后、重写的方法调用,以重写的子类为准。

  我们再创建一个雪梨的类

public class pear extends fruits{
}

然后我们在苹果类中创建一个雪梨的对象。

public class Apple extends fruits {
    //方法的重写
    public void eat(){
        //输出  这是吃水果的办法
        System.out.println("这是吃苹果的办法,水果名是"+name);
    }
    //主方法
    public static void main (String[]args){
    //创建苹果类的对象
    fruits A=new Apple();
    //创建雪梨的对象
    fruits X=new pear();
    //调用方法
    //调用取水果名字的方法
    A.Fname("苹果");
    //调用吃水果的方法
    A.eat();
    X.Fname("雪梨");
    X.eat();
    }
}

运行一下

这是吃苹果的办法,水果名是苹果
这是出水果的办法,水果名是雪梨

4、访问权限修饰符:

        即访问权限控制被修饰的内容被使用的时候能在那些地方使用。

访问权限修饰符分为:

      1、public;

      2、protected;

      3、           ;

      4、private;

下面表格是具体的是否能被使用的情况:

访问权限修饰符 当前类中 同一个包下 不同包下的子类 其他
public(公共的) 可以使用 可以使用

可以使用

可以使用
protected(子类都可以使用) 可以使用 可以使用

可以使用

 
缺省(什么都不写) 可以使用 可以使用

 

 
private(私有的) 可以使用

 

   

 

posted on 2018-12-26 15:59  张裕泉  阅读(247)  评论(0编辑  收藏  举报