Java学习-第一天(上)

面向对象

变量的使用规则

对比三个程序:

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值