【Java个人笔记】类

 

参考:《Java核心技术 卷I》  菜鸟教程(www.runoob.com)

目录

实例域


本文知识体系如下:

描述:类(class)是构造对象的模板和蓝图

类与对象:以类为模板实例化一个对象,对象是类的一个实例,一个类可以有多种实例化(类—>对象),类的描述一类对象的行为和状态

类间关系依赖(“uses-a”)用一个类A的方法操作另一个类B的对象,称为A依赖于B(尽可能地将互相依赖的类简直最少,即耦合度将至最低)

                  聚合(“has-a”)类A的对象包含类B的对象

                  继承(“is-a”)用于拓展类的功能,后面会着重学习

预定义类与自定义类:预定义类,已经封装好可供使用的叫预定义类,譬如Math类、Date类,无需自己重新编译同功能的类,也不太需要了解该功能如何实现,只需知道怎么使用即可;自定义类,自己编辑成员变量与成员方法,与要实现的目标关系较大。

 

以下是一个Person类

class Person{
\\以下是“人”类的实例变量,每个人都具有姓名性别年龄
    private String name;
    private String sex;
    private int age;

\\构造方法
    \\默认构造方法,如不添加构造方法,该方法会自动生成
    Person(){
    }
    \\自定义构造,在实例化对象时可以给该对象附上实例变量name
    Person(String name){
    this.name = name;
    }

\\成员方法(调用该方法Person表示长大1岁)
    public void Grow(){
    this.age += 1;
    }

}

 

 

实例域

用final修饰实例域之后,该实力域将不可变

     构造方法

1、与类同名,无返回值,总是伴随new操作调用

2、每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法。

       即上面的Person(){};

3、在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。

     实例变量

上面name,sex,age等变量,随着对象实例化而赋值、变得有意义。也就是对象某种属性(如年龄性别)的模板

     成员方法

通俗来讲就是对象的行为,对象会做什么,对他做什么之后他有什么反应等等

显式参数和隐式参数:在调用方法时向方法传入的参数,例如public void Grow(a)中的a,称为显式参数;方法体中出现的对象成员变量称为隐式变量。

 

 

 

静态域

每个类只有这么一个域,用static修饰,为该类的所有对象所共用。并且不用实例对象便可使用,直接用类名调用

静态域中有静态变量,静态常量,静态方法

      静态变量(类变量)

      静态常量    

例如Math.PI调用Math类中public static final double PI = 3.1415926535897932

      静态方法  

  当方法与对象无关,没有隐式参数,或只需访问静态域时使用静态方法

      工厂方法   静态构造方法

      main方法   作为程序的入口(当需要测试某个类时可独立添加main方法,并单独执行该类,称为单元测试)

 

 

 

补充

1、静态变量(类变量),成员变量,局部变量

1.局部变量:在方法、构造方法、语句块中定义的变量。其声明和初始化在方法中实现,在方法结束后自动销毁

public class  ClassName{
    public void printNumber(){
        int a;
    }
    // 其他代码
}

2.成员变量:定义在类中,方法体之外。变量在创建对象时实例化。成员变量可被类中的方法、构造方法以及特定类的语句块访问。

public class  ClassName{
    int a;
    public void printNumber(){
        // 其他代码
    }
}

3.类变量:定义在类中,方法体之外,但必须要有 static 来声明变量类型。静态成员属于整个类,可通过对象名或类名来调用。

public class  ClassName{
    static int a;
    public void printNumber(){
        // 其他代码
    }
}

2、封装,访问权限 

在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。

封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。

要访问该类的代码和数据,必须通过严格的接口控制。

封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。

适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。

封装的优点

  • 1. 良好的封装能够减少耦合。

  • 2. 类内部的结构可以自由修改。

  • 3. 可以对成员变量进行更精确的控制。

  • 4. 隐藏信息,实现细节。

实现Java封装的步骤

1. 修改属性的可见性来限制对属性的访问(一般限制为private),例如:

public class Person { 
    private String name; 
    private int age; 
}

这段代码中,将 name 和 age 属性设置为私有的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏。

2. 对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问,例如:

public class Person{ 
    private String name; 
    private int age; ​ 

    public int getAge(){ 
    return age; 
    } ​ 
    public String getName(){ 
    return name; 
    }
    public void setAge(int age){ 
    this.age = age; 
    } ​ 
    public void setName(String name){ 
    this.name = name; 
    } 
}

采用 this 关键字是为了解决实例变量(private String name)和局部变量(setName(String name)中的name变量)之间发生的同名的冲突。

 

 

待更:方法参数,类设计技巧


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值