抽象类和抽象方法
2024-01-08 05:52:49
抽象类和抽象方法
-
概述:一个没有方法体的方法,应该定义为抽象方法。而类中如果有抽象方法,该类必须定义为抽象类。
public abstract class Test{ // 抽象类 public abstract void show(); // 没有方法体,抽象方法 }
-
特点:
-
抽象类和抽象方法必须使用 abstract 关键字修饰
// 格式如下: public abstract class 类名{} public abstract 返回值类型 方法名();
-
抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
-
抽象类不能实例化(也就是不能创建对象)
不能实例化怎么办呢?参照多态的形式,通过子类对象继承、重写、父类引用指向子类对象
-
抽象类的子类
- 要么重写抽象类中的所有抽象方法
- 要么其子类本身也是抽象类
// 抽象类 abstract class Animal{ // 抽象方法 public abstract void show(); public abstract int sum(int a , int b); } //class Cat extends Animal{ // //} class Dog extends Animal{ @Override public void show() { } @Override public int sum(int a, int b) { return 0; } } abstract class Pig extends Animal{ } public class Test { public static void main(String[] args) { } }
自己可尝试下,加深印象!
-
抽象类的成员特点
成员 | 特点 |
---|---|
成员变量 | 必须是常量 |
构造方法 | 有构造方法,但是不能实例化。作用:子类访问父类数据的初始化 |
成员方法 | 可以有抽象方法,限定子类必须完成某些动作。也可以有非抽象方法,提高代码的复用性 |
-
回顾下,构造方法两个作用
-
创建对象
-
数据初始化
class Cat{ } public class Test{ public static void main(String args[]){ Cat c = new Cat(); } }
-
-
构造方法:有构造方法,但是不能实例化。作用:子类访问父类数据的初始化
-
不能实例化,我们在前边已经说过了,我们来看下,为啥是父类数据的初始化
super()相当于访问父类无参构造,而构造方法的作用就可以进行数据的初始化(可点击super 回顾下super关键字的作用)
-
文章来源:https://blog.csdn.net/weixin_45754463/article/details/135400052
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!