一、抽象类
什么是抽象类?
1.有abstract修饰的类就是抽象类
1)有抽象方法的类一定是抽象类,抽象类不一定有抽象方法
2)有构造器,但是不能实例化。
3)抽象方法的关键字不能省略
2.接口是特殊的抽象类,关键字是interface
1)如果有方法,一定都是抽象方法*
2)如果有属性,一定都是常量*
3)没有构造器,不能实例化*
3. 强调:有抽象方法的类一定是抽象类,
但是抽象类中不一定要有抽象方法
4. 抽象类可以被继承:如果子类是一个普通的类,那么应该
重写父类的抽象方法,写出{}
如果子类是抽象类,符合抽象类的特点即可。
二、接口:interface
特殊的抽象类,
特殊在:如果有方法,一定是抽象方法,abstract关键字可以省略
如果有属性,一定是常量,
常量的修饰词:public static final 可以省略不写
常量的名字全都大写。
没有构造器,不能实例化
接口其实是一种协议,标准.
接口与抽象类,类的关系.
三、面向对象的三大特征:
继承,封装,多态
继承的好处:可以不用修改一个类,利用继承的特点,可以
扩展这个类,生成一个子类,有利于二次开发
封装的好处:提高代码的重用性,减少冗余,减少代码的可见性,相对
安全。
多态?
1. 对象的多态?
不同父类型的引用指向同一个对象,会有不同的行为功能。
如: 当这个人处在公司时,只能有在公司的某些行为
同一个人在家时,只能有在家的某些行为
2.变量的多态?
同一个变量指向不同的对象时,会有不同的行为。
方法的重载?
学生上学的行为
骑自行车
做公交车
开车
四、向上造型
1.父类型的变量指向子类型的对象 Aoo a=new Boo()
1)在编译期间,变量调用的方法是父类型中的。
2)运行期间,如果调用的方法是子类重写的,那么一定是调用子类的方法;
如果没重写,那么调用的是父类中的方法
2.变量调用的属性:一定是父类中的属性 **
四)向下转型
1)将父类型的变量所指向的对象,转换成子类型的变量
Aoo a=new Boo();//上
Boo b=(Boo)a; 下
有可能会出现 ClassCastException异常
Aoo a=new Coo();
Boo b=(Boo)a;
为了避免这种情况发生,需要使用instanceof进行判断
2)判断变量所指的对象是不是某一类型
上述代码应该改成:
Aoo a=new Coo();
if(a instanceof Boo){
Boo b=(Boo)a;
}
编译期间:javac.exe只检查代码的语法是否正确
五)内部类
1.概念:在类内部定义的类型,就叫内部类
2.分类
1)成员内部类:在类内部定义的,与方法并列的,是外部类的成员
2)匿名内部类:没有名字,在方法中使用的
可以创建接口的匿名子类
可以创建抽象类的匿名子类
可以创建普通类的匿名子类
Foo foo=new Foo(){
//重写方法
public void run(){}
};
六、API:(application programming interface)
应用重写编程接口,就是开发文档
javaAPI内,包含了大量已经开发好的功能(被封装到类
含有常用的API(字符串操作,集合操作,IO流
常用的包:
java.lang包:内部含有常用的类型,不需要导入包,可
java.util包:常用的类型,Scanner,日期Data,Canle
java.net包:socket套接字符等
java.io:输入输出流等
java.math:math类