标签:
多态:
1,方法的多态 --方法的覆盖或者重载
2,对象的多态
多态的前提:
将子类对象当作父类对象来看 --Animal a1=new Bird(...);
定理一:我们可以把子类对象当作父类对象来看,但我们一旦这样做了,就只能去调用父类中原有定义的属性和方法(子类中扩展的属性和方法不能调用)
定理二:当我们把子类对象当作父类对象来看时,如果子类覆盖了父类中的方法,则调用该方法时,调用的是子类覆盖后的方法。
注:不要在子类和父类中写同名属性。、
修饰符:
static:静态的成员 属性
方法
实例属性
静态(类)属性
static属性和实例属性的差别:
1,static属性在整个类中只有一份,实例属性有多少个对象就有多少个值
2,static属性在类加载时被实例化,而实例属性在生成对象的时候被实例化
3,对static属性的访问直接通过类名去访问 例:Animal.Count;可以在没有生成任何对象之前就访问到。
注:静态方法中只能访问本类中的静态成员,static不仅可以用来修饰属性和方法,还可以修饰代码块,称为静态代码块。
package day03;
public class StaticTest {
String name;
static int count;
static{
System.out.println("(1)In Static Block!");//在类加载的时候被执行
}
public StaticTest(){
System.out.println("(2)In Constructor!");
}
public static void addCount(){
count++;
//System.out.println(name);//不能访问name
}
public static void main(String[] args){
System.out.println("(3)In Main Method first Line!");
new StaticTest();
}
}
执行结果: (1)In Static Block!
(3)In Main Method first Line!
(2)In Constructor!
final(最终的):修饰 类,
属性, final修饰的类属性方法局部变量代表最终的,不可变得
方法,
方法中的局部变量
package day03;
public class FinalTest {
/**
* final的属性必须赋初值,并且只能在这两个地方赋值
* 1:定义时赋值2:构造方法中赋值
* final定义的变量要大写
*/
public final int MAX_SIZE=100;
public final int MAX_LENGTH;
public FinalTest(int MAX_LENGTH){
this.MAX_LENGTH=MAX_LENGTH;
}
}
abstract(抽象的):只有方法头没有方法体,在这个类的抽象层次上我还不知道如何实现这个类的方法,但是这个类一定有这个方法
例:public abstract void move();
修饰 类,
方法,
注: 1,一旦某个类中包含有抽象方法,那这个类也必须定义成抽象类。反之,如果一个类不包含任何抽象方法,这个类也可以定义成抽象类。
2,抽象类不能实例化,但能定义一个引用,
3,abstract和final不能同时使用
访问权限的控制,接口
标签:
原文地址:http://www.cnblogs.com/zggblog/p/4701742.html