类与对象(笔记)
定义对象的类
1.类就像苹果派的配方(对象代表现实世界可以明确标识的一个实体,凡事看到的物体或者看不到的气体都算是对象。
)
2.对象像苹果派(对象的行为是由方法定义的)
3.类里面有:数据域(就是对象的属性或者状态或者特征)、方法、构造方法(特殊类型方法、可以完成任何动作)
举个例子:人就像一个类:
(数据域)属性:两条腿
两双手
智商
(当方法别调用时对象可以完成的动作)方法:说话
走路
跑
当对象调用方法的时候,就是要求对象完成一个动作。
一个对象是类的实例。
类可以创建多个对象。
创建实例的过程为实例化。
Java使用变量数据域、使用方法定义动作、还提供了一种陈伟构造方法的特殊类型的方法。
类:1.数据域
书写格式:(1.变量类型类型名、2.变量类型类型名=变量值)
2.构造方法(与类名相同,同时没有void和返回值,但可以用public)
书写格式:(类名(参数类型、参数名)构造方法的前面不能出现的是static final synchronized ,abstact native ,void,但是可以出现的是public private)
3.方法(有返回值,要返回给main)
书写格式(方法名(参数类型、参数名):返回值[必须是一个返回值,同时必须是一个具体的值])
使用构造方法构造对象
1.构造方法必须与具备所在类相同的名字
2.构造方法没有返回类型,甚至连void也没有
3.构造方法是创建一个对象使用new操作符是调用的。
构造方法的作用是初始化对象。
(为什么要用到构造方法!这个就是理由,同时可以构造多个构造方法,但要有不
同的签名)这样更容易用不同的初始数据值来构造对象。
4.构造方法是用来构造对象的。
可以不写构造方法,但是类中没有明确定义任何构造方法时会自动提供
通过引用变量访问对象
创新的对象在内存中分配空间。
它们可以通过引用变量来访问。
对象是通过对象应用变量来访问的,该变量包含对象的引用。
格式:类名对象引用变量=new 类名();
数组变量实际上是一个包含数组引用的变量.
访问对象的数据和方法
在创建一个对象之后,它的数据和方法可以使用运算符(.)来访问和调用,该运算也成为对象成员访问运算符。
(说白了就是访问该对象的数据和该对象的方法)。
书写格式:
对象.数据域;
对象。
方法();
有时候一个对象创建之后不需要引用变量那么可以这样写(new 方法().getArea();)
书写格式
New 方法().数据域;(new 方法()相当于对象,就是匿名对象)
New 方法().方法();
引用数据域和null值
引用类型数据域的默认值是null,
数值类型数据域默认值是0
Boolean类型数据域猫人值是false
Char类型数据域默认值是’\u0000’
基本类型变量和引用类型变量的区别
基本类型对应内存所存储的值是基本类型值(说白了和就是赋值的内容是一直的)
引用类型变量来说,所存储的值的一个引用,就是对象的存储地址。
静态变量、常量和方法
如果想让一个类的所有势力共享数据,就要使用静态变量,也称之为类变量。
静态变量值存储在一个公共给的内存地址。
因为他是公共的地址,所以某一个对象修改了静态变量的值,那么同一类的所有对象都会受到影响。
(就是所有的对象共享一个静态变量,静态变量会受不同的对象影响)
书写格式(总结):
Static 变量类型变量名;
Static 方法类型方法名();(这个是方法,而不是构造方法)
静态访问的方法
类名。
方法名(参数)(调用静态方法)
类名。
静态变量(访问静态变量)
类名。
静态变量=变量?
实例访问的方法
New 方法().数据域;(new 方法()相当于对象,就是匿名对象)
New 方法().方法();
对象.数据域;(不能单独放在方法里面)
对象。
方法();
那么反过来是动态的可以直接调用静态的方法和变量
设计问题:
如果变量和方法依赖于某个具体实例,那么就让他变成实例变量或实例方法。
如果一个实例变量或方法不依赖某个具体的实例,就将它变成静态变量和静态方法。
同时Math类中没有一个方法是依赖于一个特定实例,所以这些方法是静态的,也就是说main方法也是静态的可以直接调用。
动----动要访问符
静----动要访问符
动----静不要访问符
静----静不要访问符
Public calss Test{
Public static int factorial(int n)(参数不考虑!)
{
Int result=1;
For(int i=1;i<=n;i++)
Result*=I;
Return result;
}
}
可见修饰符
Private修饰符限定方法和数据域只能在它自己的类中访问。
修饰符Private只能应用在类的成员上。
修饰符public可以应用在类或类的成员上。
(说白了就是不能使用在局部变量里)
数据域封装
第一,数据域可能被装改
第二,它使类变得难以维护,同时容易出现错误。
第三,为了面边数据域的修改,应该使用private修饰符将数据域声明为私有的。
这称为数据域封装。
在定义私有数据域的类外对象是不能访问这个数据域的。
但是经常会有用户要存取、修改数据域的情况。
为了能够访问私有数据域,可以停工一个get方法返回数据域的值。
为了更新一个数据域,可以提供一个set方法给数据域设置新值。
书写格式
get方法签名如下
Public 返回值类型get****()
如果返回类型是boolean型
Public Boolean is***()
Set方法签名如下
Public void set(数据类型变量名)。