Java学习-第一天(上)

来源:互联网 发布:手机如果申请淘宝店铺 编辑:程序博客网 时间:2024/04/26 11:36

面向对象

变量的使用规则

对比三个程序:

public class Test1{    static int i;    public static void main(String[] args)    {        for ( i = 0 ; i < 10 ; i++)            System.out.println("Hello");    }}
public class Test2{    int i;    public static void main(String[] args)    {        for( i = 0 ; i < 10 ; i++)            System.out.println("Hello");    }}
public class Test3{    public static void main(String[] args)    {        for( int i = 0 ; i < 10 ; i++)            System.out.println("Hello");    }}

三个程序运行结果完全相同,但是程序的效果则大有差异,第三个程序最符合软件开发规范。
在程序中使用局部变量,也应该尽可能的缩小局部变量的作用范围,局部变量的作用范围越小,它在内存里停留的时间就越短,程序运行性能就越好。

隐藏和封装

什么是封装?
封装是面向对象编程语言对客观世界的模拟,指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问。
两个含义:
把该隐藏的隐藏起来,把该暴露的暴露出来。

访问控制符

访问控制级别大小:
private < default < protected < public

private(当前类访问权限):如果类的一个成员(Field 方法 构造器)使用 private 修饰,则这个成员之恩那个在当前类的内部被访问。修饰 Field 最合适, 就可以把 Field 隐藏在该类的内部。

default(包访问权限):default 访问控制的成员或外部类可以被相同包下的其他类访问。

protected(子类访问权限):protected 访问控制的成员既可以被同一个包中的其他类访问,也可以被不同包中的子类访问,在通常情况下,如果使用 protected 来修饰一个方法,通常是希望其子类来重写这个方法。

public(公共访问权限):public 访问控制的成员或外部类可以被所有类访问。

局部变量作用域就是它所在的方法,不可能被其他类访问,因此不能使用访问控制符进行修饰

对于外部类而言,只有两种访问控制符:public 和 default

Person 类

public class Person{    private String name;    private int age;    public void setName(String name)    {        //设置name    }    public String getName()    {        return this.name;    }    public void setAge(int age)    {        //设置age    }    public int getAge()    {        return this.age;    }

在 Person类之外只能通过各自对应的 set 和 get 方法来操作和访问它们。

一个类往往就是一个小的模块,我们应该只让这个模块公开必须让外界知道的内容,而隐藏其他一切内容。进行程序设计时,应尽量避免一个模块直接操作和访问另一个模块的数据,模块设计追求高内聚(尽可能把模块的内部数据和功能实现细节隐藏在模块内部独立完成,不允许外部直接干预)和低耦合(仅暴露少量的方法给外部使用)。

什么是包?

package import 和 import static

Java引入包(package)机制,提供了类的多层命名空间,用于解决类的命名冲突和类文件管理等问题。
package 语句必须作为源文件的第一条非注释语句,一个源文件只能指定一个包,可以定义多个类,这些类将全部位于该包下。

父包中的类需要使用子包中的类,必须使用子包的全名

//使用 import 语句导入单个类import package.ClassName;
//使用 import 语句导入指定包下全部类import package *;

星号(*)只能代表类,不能代表包。所以使用上述语句时,如需导入子包中的类,则需使用:

import package.subpackage.*;

import static :用于导入指定类的某个静态 Field 或方法 或全部静态 Filed 或方法。

//单个import static package.ClassName.fieldName|methodName; 
//全部import static package.ClassName.*;

例子:

import static java.lang.System.*;import static java.lang.Math.*;public class StaticImportTese{    public static void main(String[] args)    {        //out是java.lang.System类的静态Field        //PI是java.lang.Math类的静态Field        out.println(PI);        //直接调用Math类的sqrt静态方法        out.println(sqrt(256));    }}

Java源文件大体结构:

package 语句                          //0个或多个,文件开始import | import static 语句           //0个或多个,所有类定义前public calssDefinition | interfaceDefinition    //0个或1个public类或接口类classDifinition | interfaceDefinition           //0个或多个普通类或接口定义
0 0
原创粉丝点击