码迷,mamicode.com
首页 > 其他好文 > 详细

多态,修饰符

时间:2015-08-04 14:57:39      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

多态:
 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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!