码迷,mamicode.com
首页 > 编程语言 > 详细

java基础知识

时间:2015-03-07 00:56:42      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:

1.abstract的函数只能在abstract类中

2.函数的重载

同一个类中,多个函数名相同

通过参数列表(参数类型,顺序,数目)区分它们的不同

println就是函数重载,根据不同的参数,选择不同的函数

3.构造函数

函数名与类名相同,没有返回类型,public

系统自动调用,在实例化一个对象是,调用构造函数

不能通过其他方式调用,主要完成初始化工作

补充:类中一定存在构造器;用户没有显示定义构造器,则java回默认分配无参构造器;一旦用户显示定义了构造器,不会再分配无参构造器。

4.静态初始化器

static{
  //语句  
}

特点:类初始化,所属类加入内存时运行;没有返回值,没有参数;其中的变量必须是static型的。

public class Account{
    static int AccountNo = 0;
    public Account(){
        AccountNo++;
        System.out.println("bb");
    }
    static{
        //静态初始化值
        AccountNo=1000;
        System.out.println("aa");
    }
}


public class Example{
    public static void main(String[] args){
        Account a = new Account();
        System.out.println(a.AccountNo);
        Account b = new Account();
        System.out.println(b.AccountNo);
    }
}

结果:
aa
bb
1001
bb
1002

结论:static静态类初始化器早于其他函数执行;只执行一次;在static int AccountNo=0;之后,则在这之后执行。

补充:static静态初始化器是在实例化类时执行。

 5.终结器

protected void finalize(){
    //语句
}

执行条件:当垃圾达到一定数目,且系统不是很忙是,垃圾回收线程会自动完成,所有垃圾对象的内存释放工作。

6.面向对象程序设计

封装性(隐藏细节,权限控制);继承性(类的层次结构);多态性(方法名相同,实现不同)

7.对象的内存模型

栈:存放基本数据类型和对象

堆:存放对象实例

Bird a = new Bird();

技术分享

final修饰的类不能被继承

final修饰成员变量,表示不能够改变,可以理解为常量

技术分享

类的继承:子类不能继承父类的private方法

 

成员的覆盖:

1)变量的覆盖

  • 子类的成员变量和父类的成员变量同名
  • 变量的覆盖与类型无关,只与变量名相关
  • 当子类执行继承父类的方法时,处理的是父类的成员变量

2)函数的覆盖

  • 子类的成员方法与父类的成员方法的原型相同
  • 函数的覆盖不仅与方法名相关,而且与其参数类型、顺序、数目、返回值相关

 

构造函数的继承

  1. 子类无条件继承父类不含参构造函数
  2. 子类先执行父类的无参构造函数,再执行自己的构造函数
  3. 子类可以通过在自己构造函数中使用super关键字来调用父类的构造函数,该语句必须在子类构造函数的第一个可执行语句。
public class Swan extends Bird{
    public Swan(){
        System.out.println("Swan!");
    }
    public Swan(int num){
        System.out.prinln("Lake!");
    }
}

public class Bird{
    public Bird(){
        System.out.println("Bird!");
    }

}

public class Example{
    public static void main(String[] args){
        Swan a = new Swan();
        Swan b = new Swan(1);
    }
}

结果:
Bird!
Swan!
Bird!
Lake!
public class Swan extends Bird{
    public Swan(){
        super(1,1);
        System.out.println("Swan!");
    }
    public Swan(int num){
        super(1,1);
        System.out.prinln("Lake!");
    }
}

public class Bird{
    public Bird(){
        System.out.println("Bird!");
    }
    public Bird(int c, double s){
        System.out.println("CS!");
    }

}

public class Example{
    public static void main(String[] args){
        Swan a = new Swan();
        Swan b = new Swan(1);
    }
}

结果:
CS!
Swan!
CS!
Lake!

结论:用了super以后,就不再默认先调用父类午餐构造函数了。

null  表示空对象

this 表示当前对象的一个引用(可以理解为别名);可以调用当前对象的方法;可以调用当前对象的构造函数;把当前对象的引用作为参数传给其他方法。

super 表示当前对象的父类对象的一个引用;可以调用当前对象的父类对象的方法;可以调用当前对象的父类对象的构造函数;把当前对象的父类对象的引用作为参数传递给其他方法。

 

多态性

  • 重载
  • 覆盖
  • 父类引用指向子类对象实例:前期绑定(指编译时绑定);后期绑定(运行时绑定)

 

java基础知识

标签:

原文地址:http://www.cnblogs.com/jinhuazhe2013/p/4319545.html

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