面向对象之多态
1.static关键字
类的,静态的,所有对象共享的
1.可以修饰属性(全局变量),对于静态属性来说,其get和set方法也是static的。
2.可以修饰方法
* static修饰的方法可以使用类名.来调用,也可以使用对象.来调用(属性也一样),但是建议是前者。
* 一般属性和方法属于具体某个对象,静态的属性或方法属于整个类。
* 静态方法内部只能调用静态的属性或方法,一般方法内部可以调用一般属性或方法,也可以调用静态属性或方法。
* 在静态方法中,如果想调用一般方法,需要使用`对象.“来调用。
* 在静态方法中,不能使用this和super关键字3.可以修饰类中的语句块
* 对于一般语句块来说,先于构造方法运行,并且每次调用构造方法,都会运行。
* 对于静态语句块来说,先于构造方法运行,并且只会运行一次,一般用来做初始化工作,比如JDBC中的加载驱动。4.static可以修饰内部类,不能修饰外部类
2.final关键字
最终的
1.可以修饰方法,表示该方法不能被重写
2.修饰一个类,表示该类不能被继承,那么所含方法更不能被重写了。参见:String
3.可以修饰一般属性,表示该属性必须赋值,并且不能被改变。有三种赋值方式
* 定义变量时直接赋值
* 通过一般语句块赋值
* 通过构造方法赋值4.可以修饰静态属性(用的比较多),有两种赋值方式:
* 直接赋值
* 通过静态语句块赋值
* 这样定义的变量,值不可改变,称为不可变的变量(常量)。常量命名规范:所有字母全部大写,不同单词之间使用”_”分割,比如Math.PI,Integer.MAX_VALUE
3.多态
多态:1个表现、两个调用规则
1.1个表现:父类的引用指向子类的对象,这种用法称之为多态
2.两个调用规则:
* 当发生多态时,只能调用父类的方法,不能调用子类的方法
* 如果子类重写了父类的方法,那么会调用子类重写后的方法3.发生多态时,如果需要调用子类自身的方法,需要进行强制转换
*instanceof判断两个类型能否进行强制转换
if(animal instanceof Dog){
Dog dog = (Dog) animal;
}
4.多态实现计算机原理
//编译器认为 运行器认为
Animal animal = new Dog();
4.abstract关键字
抽象的,不具体的
1.修饰方法,表示一个抽象方法,抽象方法没有方法体。
如:public abstract void method()
注意区分:public void method(){}
2.如果一个类中有抽象方法,则该类必须定义为抽象类。
3.一个抽象类中可以全是非抽象方法,也可以全是抽象方法,也可以两者都有。
4.如果父类中有抽象方法,则子类可以自身为抽象类,或者子类重写父类的所有抽象方法
5.抽象类有构造方法,但是不能直接new+构造创建对象。构造供子类去调用(super())
6.抽象类如何来用?利用多态
7.抽象方法是一个标准、所有的子类都必须实现,否则该子类还是抽象类。
8.抽象类可以有main方法
9.抽象类可以继承自另一个抽象类,无需实现父类的抽象方法
非抽象类如果继承了一个抽象类,必须实现父类的抽象方法
10.抽象类有构造方法,但是不能实例化,必须通过子类实例化
11.abstract永远不会和private、static、final同时出现
12.注意一点:在抽象类中的一般方法中,可以调用抽象方法。经常用于android中的回调

被折叠的 条评论
为什么被折叠?



