java基础-面向对象(上)

来源:互联网 发布:ug安装java虚拟机 编辑:程序博客网 时间:2024/05/16 00:45

一,注意事项:

   (1)java保存的文件名必须与类名一致;如果文件中只有一个类,文件名必须与类名一致;一个Java文件中只能有一个public类;如果文件中不止一个类,文件名必须与public类名一致;如果文件中不止一个类,而且没有public类,文件名可与任一类名一致。

   (2)对一个类有三种常见成员:构造器,成员变量,方法。

   (3)static修饰的成员(静态)不能访问没有static修饰的成员(非静态);static修饰的变量和方法属于类本身,被称为类变量,类方法,可以通过类来直接调用,最好不要通过对象来调用;static修饰的方法不能使用this引用(思考下为啥),只能创建一个新的对象来引用静态方法。

   (4)this关键字可以代表任何对象,当this出现在某个方法体中,它代表的对象不确定,但它的类型是确定的,它所代表的对象只能是当前类;只有当这个方法被调用时,它所代表的对象才能被确定下来,谁在调用它,this就代表谁。可以说this关键字总是指向调用它的对象。两个默认用途:构造器中引用正在初始化的对象,在方法中引用调用该方法的对象。大部分时候,一个方法访问该类中的其他方法,不用加this关键字(默认加了)效果一样。

   (5)类:public,final,abstract,类名首字母大写,其他小写。

   (6)构造器:用于创建实例,构造器名必须与类名相同,自己不写,系统会给默认构造器。

二,方法:

   (1)static修饰符决定了方法属于类还是对象。

         (2)传入方法的参数,是实际参数的副本。执行方法时,形参先初始化,实参值再赋给形参。注意引用类型的参数传递,传入的参数是实际对象地址值。

   (3)在最后一个形参类型后增加三个点(...),表明该形参可接受多个参数值,形参个数可变的参数本质就是一个数组参数,只能有一个且位于形参列表的最后。

   (4)递归方法一定要向已知方向递归。

   (5)方法重载:一个类里方法名相同,形参列表不同;返回值不能用于区分重载方法。

三:成员变量和局部变量:

   1)成员变量分为类变量和实例变量,局部变量在方法中,或是形参,或在代码块中,二者存在时间也不同

   (2)声明成员变量时可以不初始化(被final修饰且没有static的必须显式赋值),成员变量在加载类或创建实例时,系统自动分配内存,指定初始值而局部变量除了形参必须显式初始化。

   (3)成员变量可以被public,protect,private,static,final等修饰符修饰,而局部变量不能被控制修饰符及static修饰;两者都可以定义成final型;成员变量存储在堆,局部变量存储在栈
   (4)
java 中当局部变量和成员变量的变量名相同时,以局部变量为主,用this引用成员变量。

四:封装

(1)访问控制符:

对类中的一个成员
                                     

          (2)对private修饰的成员,最好使用setter和getter方法进行操作和访问;外部类只有两种访问控制级别:private和default。

        (3)package packagename;语句作为第一行非注释代码,意味着该源文件里的所有类属于这个包,包名一般选择全小写字母构成;编译Java时使用javac  -d . xxx.java 会在当前路径下生成相应的文件结构和xxx.class文件。

        (4)同一个包下的类可以自由访问,不同包下的类可以使用完整类名或使用import语句访问(省略写包名);import static package.class.fieldname|methodname 可以导入指定类的静态变量或方法(省略写类名);java默认为所有源文件导入了java.lang包下的所有类。

五,构造器:

(1)修饰符只能是控制修饰符,无返回值。

(2)构造器也可以被重载,与类中方法一样;可以再构造器B中使用构造器A的初始化代码(this关键字必须在构造器执行体的第一句):

package easytest;class Student {    public String name;    private int age;    float score;    private Student(){}    private Student(String name,int age)    {    this.name=name;    this.age=age;    }    Student(String name,int age,float score)    {    this(name,age);    this.score=score;    }}public class Easytest{    public static void main(String args[]){    Student xc=new Student("xuchen",23,(float)100.0);    System.out.println(xc.score);    }}


  


   

原创粉丝点击