第一章 对象和封装
- 对象和类的区别
- 定义类的方法
- 封装的好处及步骤
(1)对象是类的实例,类的对象的抽象:简单来说就是这样,类是一个抽象的东西它里面可以放有很多的属性和方法。当我们想要使用到类中的方法时就要对这个类进行实例化,也就是创建这个类的对象,来调用类中的方法或者使用类中的属性。我们可以由一个类创建多个对象
(2)定义类的方法,第一步:发现类 第二步:发现类的属性 第三步:发现类的方法。 这样你就可以定义出一个你所需要的类。
(3)封装的好处在于,隐藏类的内部细节;让使用者只能通过程序规定的方法来访问数据;可以方便地加入存取控制语句,限制不合理操作。
单词:
-
class:类
-
object:对象
- static:静态
-
finail:java中用来定义常量的关键字
- private:私有
-
public:公有
- protect:保护
-
penguin:企鹅
- health:健康
-
love:爱
1.2.1 创建类和对象
下面就是一个类:
public class Penguin{ String name = "无名氏"; int health = 100; int love = 0; String sex = "Q仔"; public void print(){ System.out.println("宠物名"+this.name+"健康值:"+this.health+"亲密度:"+this.love+"性别:"+this.sex+"。"); } }
那么怎么创建一个对象呢?
我们通常是:
通过构造方法来创建对象,如
Penguin p = new Penguin();
想要调用其中的属性的话通过对象名.属性名的方式调用属性。如
p.name = "qq";
调用方法通过 ==》 对象名.方法名。 如
p.print();
Java中的常量,使用关键字 ”final“ 来修饰,并且常量名通常为大写。如
final String SEX_MALE = "Q仔"; final String SEX_FEMALE = "Q妹";
常量是指在定义完了以后就不能被修改的一个属性,常量在程序运行过程中不会发生变化,只能被引用,不能被重新赋值,也就是只能在定义时修改其值。
1.2.2 构造方法及其重载
什么是构造方法?构造方法就是名称和类名相同,没有返回值类型的方法。构造方法的主要作用就是在创建对象的过程中执行一些初始化操作,如给成员属性赋初始值。
知识点==》Java和C#一样,在没有给类提供任何构造方法时,系统会提供一个无参的方法体为空的默认构造方法。一旦提供了自定义构造方法,系统将不再提供这个默认的无参构造方法。如果要使用它,则程序员要自己手动添加一个无参构造方法。
方法的重载:方法名相同参数类型不同或者个数不同 返回值不要求。
1.2.3 static修饰符
static修饰符可以用来修饰属性、方法和代码块。static修饰的变量称为类变量(类属性)方法称为类方法。不使用static修饰的属性和方法属于单个对象,称为实力属性和实例方法。
在方法里不可以定义static变量,也就时说,类变量不能时局部变量。(不能在方法里定义静态属性)
封装是面向对象的三大特性之一,就是将类的状态信息隐藏在类的内部,不允许外部程序直接访问,而通过该类提供的方法来实现对隐藏信息的操作和访问。
封装的具体步骤:修改属性的可见性来限制对属性的访问;为每个属性船舰一对赋值(setter)方法和取值(getter)方法。用于对这些属性的存取;在赋值方法中,加入对属性的存取控制语句。
封装的好处:隐藏类的实现细节;让使用这只能通过程序规定的方法来访问数据;可以方便地加入存取控制语句,限制不合理操作。
封装时会用到多个权限控制来修饰成员变量和方法,区别如下:
1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用
2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。
3、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。
作用域 当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
不写时默认为friendly
1.2.4 使用this关键字
this关键字是对一个对象的默认引用。在每个实例方法内部,都有一个this引用变量,指向调用这个方法的对象。
this使用的实例:
public void set Name(String name){ this.name=name; //成员变量和局部变量同名,必须使用this } public void setName(String xm){ name=xm; //成员变量和局部变量不同名,this可以不使用this }
使用this调用成员方法:
public void play(int n){ health = health - n; this.print(); //this可以忽略,直接调用print(); }
使用this调用重载的构造方法,只能在构造方法中使用,必须是构造方法的第一条语句。
public Penguin(String name ,String sex){ this.name = name ; this.sex = sex; } public Penguin(String name,int health,int love,String sex){ this(name,health); this.love = love; this.sex = sex; }
知识点==》因为this在对象内部指代自身的引用,所以this只能嗲用实例变量、实例方法和构造方法。
this不能调用类变量和类方法(静态方法,静态变量),也不能调用局部变量。