zoukankan      html  css  js  c++  java
  • 25 abstract 抽象

    1.首先我们引出抽象,在我们过去写一个父类和写一个子类的时候,要进行子类对父类方法的重写,那么父类原来的实体方法中的方法体中的内容就没有了意义,因为方法重写后执行的是子类重写后的方法。所有我们想要将父类中需要子类重写的方法的方法体去掉,这个时候就需要用到abstract这个关键字

    public class Error {
    
        public static void main(String[] args) {
            B b=new B();
            b.m();
        }
    
    }
    
     class A{
        //属性
        String name;
        //方法
        public void m1() {
            System.out.println("父类重写方法的方法体中的代码没有意义了");
        }
    
        
    }
    class B extends A{ 
        public void m() {
            System.out.println("执行的是子类重写后的方法");
        }
    }

    改造后

    public class Error {
    
        public static void main(String[] args) {
            B b=new B();
            b.m();
        }
    
    }
    
     abstract class A{ //抽象类中才能有抽象方法
        //属性
        String name;
        //方法
        public abstract void m();  //改成抽象方法
        
    }
    class B extends A{ 
        public void m() {
            System.out.println("执行的是子类重写后的方法");
        }
    }

    1.一个类中有了抽象方法,此时这个类就要变成抽象类

    2.如果父类是抽象类,子类要重写我们所有的抽象方法。

    3.子类变成抽象类就不用全部重写父类的抽象方法。

    如果一个类是抽象类,那么一定有抽象方法?不一定,有抽象方法的类才一定是抽象类。

    抽象类能创建对象吗?抽象类不能创建对象。解释如下

    1.在底层会对抽象类通过构造方法创建对象,但是这是通过c语言构建的对象,从而java本身是拿不到这个对象的,所以对外就是创建不了对象的。

    2.抽象方法没有具体的方法体----创建出来的对象却不能调用抽象方法,会出现调用错误,任何返回的东西都没有。

    import java.util.Scanner;
    public class Error {
    
        public static void main(String[] args) {
            A a =new A(1) { //A(1)后面的{}是个匿名内部类,a这个对象不是抽象类A的对象,而是匿名内部类的对象
            };
        }
    
    }
    abstract class A{
        int i;
        public A(int i) {
            this.i=i;
        }
    }

    抽象类里面可以定义属性和实体方法

    抽象方法不可以被private/static/final修饰,因为抽象方法一定要被重写,而被private/static/final修饰就不能被重写了

    默认访问权限修饰符修饰抽象方法? 只能在同胞子类中去实现重写

    不能被final修饰 因为抽象类需要被继承

    作用:统一向上造型的类型;

  • 相关阅读:
    kettle入门(四) 之kettle取昨天时间&设置任意时间变量案例
    用法
    Win10任务计划调度执行kettle作业
    Kettle 合并记录和Merge Join组件实现数据增量迁移(数据同步比插入更新快)
    鼠标右键新建没有excel
    python的to_sql
    leetcode1105 Filling Bookcase Shelves
    leetcode96 Unique Binary Search Trees
    leetcode111 Minimum Depth of Binary Tree
    leetcode128 Longest Consecutive Sequence
  • 原文地址:https://www.cnblogs.com/xuwangqi/p/11098783.html
Copyright © 2011-2022 走看看