普通类和抽象类有哪些区别?

戚薇 Java面经 发布时间:2023-06-28 22:21:19 阅读数:15915 1
下文笔者讲述普通类和抽象类之间的区别说明
学习完本篇之后,你将彻底掌握普通类和抽象类的区别,如下所示

抽象类(abstract class)简介

1.抽象类使用abstract关键字修饰 
public abstract class Demo {
    // 一个抽象类
}

2.使用abstract关键字修饰的方法为抽象方法
  注意:
   在抽象类中抽象方法可以没有具体的实现 
public abstract class Demo {
    // 抽象方法
    public abstract void show();
}

3.在抽象类的子类中必须对抽象方法进行重写
    当其子类为抽象类时
    可以不重写抽象方法
     但在其子类中一旦有普通类
     则必须重写父类继承的所有抽象方法
如: 
public abstract class Demo {
    public abstract void show();
}
 
public abstract class Demo2 extends Demo {
    public abstract void show2();
}
 
public class Demo3 extends Demo2 {
    // 实现 Demo 的接口
    public void show() {
        System.out.println("show()");
    }
 
    // 实现 Demo2 的接口
    public void show2() {
        System.out.println("show2()");
    }
}

4.抽象类不可以实例化
   抽象类的构造方法作用为初始化子类对象

如:
public abstract class MyAbstract {
    private String message;
 
    public MyAbstract(String message) {
        this.message = message;
    }
 
    public void show() {
        System.out.println(message);
    }
}
 
public class Demo extends MyAbstract {
    public Demo(String message) {
        super(message);
    }
 
    public static void main(String[] args) {
        Demo demo = new Demo("Hello World");
        demo.show();
    }
}

5.抽象类中的普通属性和普通方法都需要用子类的对象去调用
 如:
 public abstract class MyAbstract {
    // 抽象类中的一个普通方法
    public void show(String message) {
        System.out.println(message);
    }
}
 
public class Demo extends MyAbstract {
    public static void main(String[] args) {
        Demo demo = new Demo();
        // 调用抽象类的方法
        demo.show("Hello World");
    }
}

普通类(class)

1.普通类可以实例化
   实例化后可以调用自己类中的属性和方法
   及父类中的方法和属性

2.普通类的构造方法中必须要调用父类的构造方法
   如果父类没有定义带参数构造方法
     子类则不需要显示调用父类构造方法
如:
public abstract class MyAbstract {
    private String message;
 
    // 自定义无参构造方法,初始化 message 变量
    public MyAbstract() {
        this.message = "Hello world";
    }
 
    public void show() {
        System.out.println(message);
    }
}
 
public class Demo extends MyAbstract {
    // 默认调用了父类的无参构造方法
    public Demo() {}
 
    public static void main(String[] args) {
        Demo demo = new Demo();
        demo.show();
    }
}

3.当普通类继承抽象类
  则必须要重写所有父类的抽象方法 

普通类和抽象类的区别

抽象类的存在时为被继承,不能实例化
 普通类存在是为实例化一个对象。

抽象类的子类必须重写抽象类中的抽象方法
普通类可以选择重写父类的方法,也可以直接调用父类的方法。

抽象类必须用abstract 来修饰
普通类则不用。

普通类和抽象类
  都可以含有普通成员属性和普通方法。

普通类和抽象类
  都可以继承别的类或者被别的类继承。

普通类和抽象类的属性和方法
  都可以通过子类对象来调用
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaMianJing/202306/16879621206931.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者