面对对象

1.每个类都有各自的特征
 从现实中抽象出类分三步:
  1.找出它的种类
  2.找出它的属性
  3.找出它的行为

2.
//发现类
class Dog{
 //发现类的属性
 string name="旺财";
 int health=100;//健康值
 int love=0;//亲密度
 String strain="拉布拉多犬";//品种
}
//发现类的方法
pubic void print(){
 //输出狗信息代码
}

规范:
 类名,属性名,方法名及常量名的命名规范如下:
 1.类名由一个或几个单词组成,每个单词的第一个字母大写,如Dog,StringBuffer
 2.属性名和方法名由一个或几个单词组成,第一个单词首字母小写,其他单词首字母大写,如health,stuName,println(),getMassage();
 3.常量名由一个或几个单词组成,所有字母大写,如PI,SEX_MALE。

3.构造方法和重载
 作用:给成员属性默认赋予初始值
 构造方法:
  访问修饰符  构造方法名—与类名相同(){
//初始化代码
}
 如果没有返回值类型,当类实例化时,系统会自动默认分配一个无参构造
 当自定义构造方法时,系统不再提供默认无参构造方法

 有参构造就是在无参构造的基础上在小括号内加了参数。

---this关键字是对一个对象的默认引用,这里用以区分同名成员变量

方法名相同,参数列表不同,这称为构造方法的重载。

方法重载的判断依据如下:
 1.必须在同一个类里
 2.方法名相同
 3参数列表(方法参数的个数或参数类型)不同
 4.与方法返回值和方法修饰符没有任何关系
在使用this调用自身的其他构造方法时,只能作为第一条语句

-------类图
类图的好处:
 清晰,直观,方便程序的开发和设计

static修饰变量的叫做静态变量  或者  类变量
普通变量叫做:实例变量  普通成员变量
static修饰方法叫做静态方法
用static修饰的属性或方法,可以直接通过类名来访问,无需new出实例里对象
用final修饰的变量称为常量,其值固定不变
例:
static final string NAME="房上的猫";
final:常量关键字(规范:变量名大写)
静态调用:
1.实例化对象  对象.静态方法();对象.静态属性;
2.类名.属性;类名.方法();
静态代码块:只能给static的属性赋值
static{

}
注意:代码块作用是在给静态属性赋予初始值使用的,永远都比构造方法先执行一步

普通属性:实例变量
在程序中任何变量或者代码都是在 编译时 由系统自动分配内存来存储的
静态属性:类变量
所谓静态就是指在编译后所分配的内存会一直存在   直到程序退出 内存才会释放这个空间,也就是只要程序运行,那么这块内存就会一直存在
static的方法有以下几条限制:
它们仅能调再其他的static方法。
它们只能访问static数据

4.static修饰符

static可以用来修饰属性,方法和代码块。static修饰的变量属于这个类所有,即由这个类创建的所有对象共用一个static变量。通常把static修饰的属性和方法称为类属性(类变量)和类方法。不使用static修饰的属性和方法属于单个对象,通常称为实例属性(实例变量)和实例方法。使用static修饰方法的最常见的例子是我们熟悉的main()方法。
 1.在加载类的过程中,完成静态变量的内存分配,再执行静态块,两者是在创建对象之前执行的。
 2.类属性和类方法可以通过类名和对象名访问,实例属性和实例方法只能通过对象名访问
 3.类方法只能访问类属性和其他类方法。
 注意:静态方法中不能使用this和super关键字。
另外,在使用常量时,为了方便调用,可以用static来修饰,并且建议采取此种方法。例如:
static final String SEX_MALE="Q仔";
在使用时可以直接通过类名,SEX_MALE方式使用。这时称这个常量为静态常量。
5.常见错误:
 1.在类中可以定义static变量,在方法里是否可以定义static变量?
 答:在方法里不可以定义static变量,也就是说,类变量不能是局部变量。
 2.若给构造方法加上返回值类型,则会出现什么情况?
 答:构造方法没有返回值类型。如果有,则不是构造方法,而是和构造方法同名的成员方法。
6.使用封装优化电子宠物系统的类
采用private修饰符的变量不能在类外部访问,而通过public修饰的setter和getter方法访问;通过在setter方法中编写相应存取控制语句可以避免出现不符合实际需求的赋值。

封装是面向对象的三大特性之一,就是将类的状态信息隐藏在类内部,不允许外部程序直接访问,而通过该类提供的方法来实现对隐藏信息的操作和访问。

封装的具体步骤:修改属性的可见性来限制对属性的访问;为每个属性创建一对赋值方法和取值方法,用于对这些属性的存取;在赋值方法中,加入对属性的存取控制语句。

 1.修改属性的可见性>>>>>设为private
 2.创建共有的getter和setter方法>>>>>用于属性的读写
 3.在getter和setter方法中加入属性控制语句>>>>>对属性值的合法性进行判断

 封装的快捷键:Shift+Alt+S+R

封装的好处:隐藏类的实现细节;让使用者只能通过程序规定的方法来访问数据;可以方便加入存取控制语句,限制不合理操作。

 1.隐藏类的实现细节
 2.方便加入控制语句
 3.方便修改实现
 4.只能通过规定方法访问数据

封装时会用到多个权限控制符来修饰成员变量和方法,区别如下:
 1.private:成员变量和方法只能在其定义的类中被访问,具有类可见性。
 2.默认:成员变量和方法只能被同一个包里的类访问,具有包可见性。
 3.protected:可以被同一个包中的类访问,被同一个项目中不同包中的子类访问。
 4.public:可以被同一个项目中的所有类访问,具有项目可见性,这是最大的访问权限

Ctrl+1  代码自动修正
静态代码块作用:给比较复杂的静态成员赋值

原文地址:https://www.cnblogs.com/fl72/p/8482808.html