开发者

Java中抽象类与方法的重写方式

目录
  • 1. 抽象类
  • 2. 方法的重写
    • 1. 什么情况下需要重写父类中的类型呢?
    • 2. @Override 称为注解
  • 总结

    1. 抽象类

    • 关键字:abstract

    类:用来描述一类具体的事物

    抽象类:抽象的、python模糊的、不具体的类

    • 在Java的普通类中是不允许多继承的,原因是会出现调用
    • 不明确的问题;

    总结:父类中的功能是不能删除的,但其形式是不需要的(没有存在的意义),此时就可以将父类中功能的 具体实现 形式 给删掉;

    类的具体实现:创建对象

    抽象方法存在的意义是什么?

    • android于定义功能,明确该类具备此功能-----规则

    特点:

    • 1.抽象类可以有抽象方法,也可以有非抽象的方法
    • 2.抽象类中可以有构造器,但是不能创建对象,空间需要由子类对象来开辟

    2. 方法的重写

    方法重载:在同一个类中,方法名相同,参数列表不同(参数位置、参数个数、参数类型),与返回值无关

    方法重写:在继承或实现的关系下,方法名相同,参数列表相同,返回值类型相同,子类的修饰权限要大于或等于父类中的修饰符权限

    1. 什么情况下需要重写父类中的类型呢?

    1.1 子类有自己的特殊实现形式时,此时就可以重写父类中的功能

    • 如果没有特殊实现就不需要重写(此时重写不是必须的)

    2.1 所有的子类都有自己的特殊实现形式时,父类中的功能也就没

    • 必要有具体的实现,就会变成抽象,那此时,其所有的子类都
    • 必须重写父类中全部的抽象方法

    2. @Override 称为注解

    此处的含义是重写,如果方法上加上了该注解,就代表该方法是从父类中重写过来的(如果此时删除了父类中的该方法,子类就会报错)

    // 调用
    public class Demo {
     public static void main(String[] args) {
      
     }
    }
    pwww.devze.comackage day0202;
    // 爷爷类(抽象类)
    public abstract class Old {
     private String type;
     private String name;
     private String color;
     private int age;
     
     public abstract void eat();
     public abstract void sleep();
     public abstract void weight();
     
     
     public void ear() {
      System.out.println("圆圆的");
     }
     public void tail() {
      System.out.println("尾部是卷的");
     }
     
     
     public String getType() {
      return type;
     }
     public void setType(String type) {
      this.type = type;
     }
     public String getName() {
      return name;
     }
     public void setName(String name) {
      this.name = name;
     }
     public String getColor() {
      return color;
     }
     public void setColor(String color) {
      this.color = color;
     }
     public int getAge() {
    编程客栈  return age;
     }
     public void setAge(int age) {
      this.age = age;
     }
     
    }
    package ****;
    // 父类继承爷爷类
     public class Parent1 extends Old {
      
      private String eyes;
      
      
      @Override
      public void eat() {
       super.ear();
       super.tail();
       S开发者_Pythonystem.out.println("吃肉,通过哺乳其他动物");
      }
      
      @Override
      public void sleep() {
       System.out.println("困了就睡觉");
      }
      
      @Override
      public void weight() {
       System.out.println("比较大");
      }
     }

    当在继承关系中,子父类中有相同的方法或变量时,程序的编译执行有什么区别

    • 非静态的方法:执行的时候走的是子类中覆盖后的方法
    • 非静态的变量:执行的时候走的是子类中的变量

    静态的方法:执行的是调用者中的方法

    jZwOl

    静态的属性:执行的是调用者中的方法

    抽象方法不能与哪些关键字共存?

    • private:private修饰的方法只能在本类中使用,而抽象方法要求必须让子类实现,两者相互矛盾
    • final:final修饰的方法不能被重写,而抽象方法必须要被重写,
    • static:static修饰的方法可以通过类名直接调用,而抽象方法是没有方法体的

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜