今天开始java编程思想的导读,希望自己能更好的理解程序。全书1461页,恐怖,尽量一天看十页八。
OOP 面向对象程序设计
记录一点东西八
第一个小课程,抽象过程
看看概念
1万物皆为对象
2程序是对象的集合,他们通过发送信息告知彼此所要做的
3每个对象都有自己的由其他对象构成的存储
4每个对象都拥有此类型
5某一特定类型的对象可以接受同样的消息
话不多说,我们写一个简单的小例子八,打开我的eclipse程序,我们讲讲抽象类八,
可能也是抽象的一个代表了
一、概述
当父类知道子类应该包含什么样的方法,但无法确定子类如何实现这些方法;在分析事物时,会发现事物的共性,将共性抽取出,实现的时候,就会有这样的情况:方法功能声明相同,但方法功能主体不同,这时,将方法声明抽取出,那么,此方法就是一个抽象方法。
1、抽象的定义格式
抽象方法的定义格式:public abstract 返回值类型 方法名(参数);
抽象类的定义格式:abstract class 类名{}
2、抽象的特点
抽象类和抽象方法都需要被 abstract 修饰,抽象方法一定要定义在抽象类中
抽象不能直接创建对象,因为调用抽象方法没有意义
只有覆盖了抽象类中所有的抽象方法后,其子类才可以创建对象,否则该子类还是一个抽象类
之所以继承抽象类,更多的是在思想,是面对共性类型操作会更简单
3、抽象类的注意事项
抽象类一定是个父类,因为是不断抽取而来的
抽象类中可以不定义抽象方法,其存在的意义就是不让该类创建对象,方法可以直接让子类去使用
抽象关键字 abstract 不可以和以下关键字共存:
private:私有的方法子类是无法继承到的,也不存在覆盖,如果 abstract 和 private 一起使用修饰方法, abstract 既要子类去实现这个方法,而 private 修饰子类根本无法得到父类这个方法,互相矛盾
final:final 修饰的类不能被继承,而抽象类一定是父类
static:static 修饰的表示静态的,不能被修改的,但可以直接被类所调用,而abstract修饰的是抽象的,即没有方法实体,也不能直接被调用
首先我们定义一个Animal的抽象类
package geyao01;public abstract class Animal {public abstract void run() ;//定义一个奔跑的方法
}
定义一个猪类继承这个方法
package geyao01;public class Pig extends Animal{public void run() {System.out.println("我可以奔跑");}
}
定义一个猪的测试类
package geyao01;public class PigTest {public static void main(String[] args) {//创建一个小猪的对象Pig pig=new Pig();//执行小猪的方法pig.run();}
}
运行结果
我可以奔跑
实例解析
- 将共性“动物”抽取出来形成一个Develop类并定义方法:猪
- 抽象类不能实例化,即不能 new 抽象方法没有主体
- 可以定义类来继承抽象类,将抽象类进行重写,然后创建子类的对象
- 重写父类的抽象方法时,去掉abstract关键字,加上方法主体