抽象类
来源:互联网 发布:dota2国服四君子 知乎 编辑:程序博客网 时间:2024/04/27 18:01
abstract
首先查看单词意思
v.提取;抽取;把…抽象出;分离n.概要;抽象派艺术作品adj.抽象的(与个别情况相对);纯理论的;抽象的(与具体经验相对)网络
总体来说就是抽象、提取的意思,抽象不明白的话,提取我们应该知道,把某些共同的东西提取出来,避免了重复写的东西,提取精华。
对于提取出来的方法,我们就知道这种方法应该有的特性:
1. 抽象方法(提取方法) ,不能有方法体,可以让别人去写自己想要的方法体
2.抽象类中,也应该有具体方法(这种方法,可以用final规定大家都不能改;当然不用final修饰,表示你继承了后就可以修改)
例子
抽象类Person.java
定义变量:名字、年龄
抽象方法:name()
模板方法(继承Person后不能改的方法):age()
具体方法(有具体方法体):introduce()
abstract class Person{ String name; int age; protected abstract void name(); final public void age(){ System.out.println("age="+age); } void introduce(){ System.out.println("name="+name+"age="+age); }}
Student(子类)继承Person(父类)
继承Person
定义变量:年级
定义函数:study()
重写override函数inroduce()
public class Student extends Person { int grade; @Override protected void name() { } @Override void introduce() { super.introduce(); System.out.println("grade="+grade); // introduce()在Person中是具体方法,也没有final,所以可以选择性复写 // age()由于有final修饰,所以Student继承了Person,根本没有这个方法的提示,不允许修改 } // 子类中还可以定义自己的方法 void study(){ System.out.println("学习"); }}
Test主函数入口
//函数、方法
//1、一个引用能够调动哪些成员(变量和函数),取决于这个引用的类型
//2、一个引用调用的是哪一个函数,取决于这个引用所指向的对象
class Test{ public static void main(String args[]){ Student s = new Student(); Person p = s; p.name = "zhangsan"; p.age = 12; //p.grade = 5;//参考第一句话,这样的写法是错误的 p.introduce();//是使用Person的introduce还是Student的?参考第二句话(PS:此处引用了Student的introduce方法) }}
总结
抽象类天生是用来当爹的(有人天生为爹)
不能用new生成自己的对象,只能用来继承,或者作为向上转型的对象。
抽象类,也是有构造函数的,在生成子类对象的时候被调用。
生成子类的时候,必须先调用父类的构造函数。都会用super方法。
1、抽象方法就是没有函数体的函数(可以没有抽象函数,但是也可以是抽象类);也可以有实现了方法体的方法,具体方法。
2、抽象类使用abstract来定义(只能用来被继承)
3、抽象类不能生成对象,但是却可以拥有构造函数
0 0
- 抽象类 抽象函数
- 抽象类、抽象方法
- 抽象类抽象方法
- 抽象类,抽象方法
- 抽象类,抽象方法
- 抽象方法,抽象类
- 抽象类、抽象方法
- 抽象类、抽象字段、抽象方法
- 抽象类、抽象方法、抽象属性
- 13.抽象类、抽象字段、抽象方法
- 抽象类
- 抽象类
- 抽象类
- 抽象类
- 抽象类
- 抽象类
- 抽象类
- 抽象类
- Android 通过Uri获取文件路径
- Couldn’t perform atomic initialization
- Android 6.0 设备Idle状态介绍
- 国内互联网公司的开源项目及github地址汇总
- sizeof和strlen
- 抽象类
- IDA反汇编学习-转
- catkin 与 rosbuild解析及两者区别和联系
- 汇编-把二进制数据转换为相应字符串的程序
- Linux 环境配置
- 观察者模式
- 每天一个linux命令-ln
- 查找算法之hash查找-1
- LA4726 Average