• Java(14)继承


    1.继承(extends)

      1.1 继承遗传

      1.2 语法

          public class 子类 extends 父类{

         public class Dog extends Pet{

    }

     1 public class Pet {
     2     private String name = "无名氏";
     3     private int health = 90;
     4     private int love = 0;
     5     public Pet(){
     6         this.health = 95;
     7         System.out.println("执行宠物的无参构造方法");
     8     }
     9     public Pet(String name){
    10         this.name = name;
    11     }
    12     public String getName(){
    13         return name;
    14     }
    15     public int getHealth(){
    16         return health;
    17     }
    18     public int getLove(){
    19         return love;
    20     }
    21     public void ji(){
    22         System.out.println("宠物的自白:
    我的名字叫"+this.name+",健康值是"+this.health
    23                 +",和主人的亲密度是"+this.love+"。");
    24     }
    25 }
    宠物类
     1 public class Dog extends Pet{
     2     private String strain;
     3     public Dog(String name,String strain){
     4         //super(name);
     5         this.strain = strain;
     6     }
     7     public String getStrain(){
     8         return strain;
     9     }
    10     public void ji(){
    11         super.ji();
    12         System.out.println("我是一只"+this.strain);
    13     }
    14 }
    狗狗类继承宠物类
     1 /*
     2  * 继承语法 
     3  * 修饰符 SubClass extends SuperClass{
     4  *         类定义部分
     5  * }
     6  * 继承通过extends关键字来实现,其中SubClass为子类,SuperClass为父类
     7  * 修饰符如果是public,则该类在整个项目中可见,若无public修饰符,则该类只在当前包可见
     8  * 不可以使用private和protected修饰类
     9  */
    10 public class Penguin extends Pet {
    11     private String sex;
    12     //final String home = "南极";
    13 //    public void setHome(String home){
    14 //        this.home = home; // home不可以再次赋值
    15 //    }
    16     public Penguin(String name,String sex){
    17         super(name);
    18         this.sex = sex;
    19     } 
    20     public String getSex(){
    21         return sex;
    22     }
    23     public void ji(){
    24         super.ji();
    25         System.out.println("性别是:"+this.sex);
    26     }
    27 }
    企鹅类继承宠物类
     1 /*
     2  * 方法的重写
     3  * 在子类中可以根据需求对父类继承的方法进行重新编写
     4  * 要求:重写方法和别重写方法必须具有相同的方法名
     5  * 必须具有相同的参数列表
     6  * 重写方法的返回值类型必须和被重写方法的返回值类型相同
     7  * 重写方法不能缩小被重写方法的访问权限
     8  */
     9 public class TextDPP {
    10     public  static void main(String[] args){
    11         Pet pet = new Pet("吉吉");
    12         pet.ji();
    13         Dog dog = new Dog("狗狗","雪狼");
    14         dog.ji();
    15         Penguin pgn = new Penguin("胖胖","Q妹");
    16         pgn.ji();
    17     }
    18 }
    测试类

    运行结果为:

    1.3 继承的特点

         a.子类可以继承父类的非尸用的属性和方法

         b.不能继承构造方法

         c.继承默认权限修饰符的方法和属性,子类和父类必需在同一包中

      1.4 super(父类)

          super.属性名//表示方法父类的属性

          super.方法名(参数);//表示访问父类的方法

          super.(参数);//表示访问父类的构造函数

    注意: super()访问父类构造函数时,必须写在第一行

    注意:代码块会执行在构造函数之前

    2.重写

      2.1 重写就是子类重写定义父类的方法

      2.2 重写规则

         a.方法名和参数列表相同

         b.修饰符访问权限子类和父类相同或者比父类大

         c.返回值类型子类和父类相同(或者是父类返回值类型的子类)

         d.异常跟父类相同或者范围更小

     一般:重写时,子类的东西都要和父类保持一致

           构造方法不能被重写

           因为不能被继承所以不能被重写

    3.抽象类

      3.2.抽象方法

        语法:public abstract 返回值类型 方法名(参数列表);

        例:public abstract void print();

    注意:抽象方法有abstract修饰,并且抽象方法没有方法体

    1 public class Fish extends Animal{
    2     int weight = 5;
    3     int age = 9;
    4     public void info(){
    5         System.out.println("我是一只"+weight+"的鱼!");
    6         System.out.println("今年"+age+"岁了!");
    7     }
    8     
    9 }
    鱼类继承动物类
    1 public abstract class Animal {
    2         int age;
    3         String color = "";
    4         int weight;
    5         abstract void info(); //抽象这个方法让子类去实现
    6 }
    动物抽象类
    1 public class Bird extends Animal{
    2     String color="红色";
    3     int age = 4;
    4     public void info(){
    5         System.out.println("我是一只"+color+"的鸟!");
    6         System.out.println("今年"+age+"岁了!");
    7     }
    8 
    9 }
    鸟类继承动物类
    1 public class TextBFA {
    2     public static void main(String[] args){
    3         Bird b= new Bird();
    4         b.info();
    5         Fish f = new Fish();
    6         f.info();
    7     }
    8 }
    测试类

    运行结果为:

    4.抽象类和抽象方法的特点

      a.都用abstract修饰

      b.抽象类不能实例化

      并且继承抽象类的子类都必须重写抽象类的所有抽象方法

    注意:1)抽象类中不一定有抽象方法

             2)含有抽象方法中的类,一定是抽象类(接口)

  • 相关阅读:
    模态框+Tab切换显示Json/Xml格式,提交Json/Xml字符串到后台
    jeDate时间插件
    ECharts柱状图+BootstrapTable联动
    ES6新增的一些常用特性
    Array数组遍历的几种方法以及Object对象的遍历
    Arguments 对象
    数组去重几种方法
    原型链图解
    切换镜像小工具
    AppID
  • 原文地址:https://www.cnblogs.com/-chaoming/p/7019690.html
Copyright © 2020-2023  润新知