目录
欢迎各位在评论区提问或指出问题,请多多赐教 ——海鱼🐟
▮类
▪类
“类”是个什么东西?它给我的感觉既具体,又抽象。从抽象上来看,类是“方法(函数)容器”和“自定义的数据类型;从具体上来看,类是对象的母本,是现实里,各种同类对象的共性部分,在属性和行为上的共性。
▪抽象之,类是方法容器
何谓容器?就是一个只用来装东西的物品,容器无法修改里面存放的物品,容器是用来存放和分类物品的。这里的物品指的就是方法。
▪抽象之,类是自定义的数据类型
自定义数据类型就是除了8种基本类型以外的其他类型,但这个数据类型由八种基本数据组成,组成一种数据复合体。
比如,类是数据类型,String、int等也是数据类型;类能定义引用类型,String、int等能定义变量;类有new的新对象,String、int等有已经定义好的常量。类也是一种数据类型,往里面装入不同的数值,就创造出了不同的对象。
▮类的创建
▪定义类
•代码示例
public class Point { //point:n,点 private int x; //横坐标,实例变量 private int y; //纵坐标,实例变量 static String tybe = "point"; //图形类型,类变量 //输出坐标,实例方法 public void getCoordinates(){ System.out.println("("+ x + " , " + y + ")"); } //画出图形,类方法 public static void drawing(){ System.out.println(tybe + ": • "); } //构造方法,实例方法 public Point(int x,int y){ this.x = x; this.y = y; } }
▪类成员与实例成员
类方法和类变量,从名字上就能看出,这些成员是属于类的,而不属于类的子本对象。但由于所有对象都是从母本那拷贝过来的,所以,所有对象都拥有和能使用这些类成员。
实例方法和实例变量,这些成员是属于每个对象的。每个对象的实例成员都有所差异,单独的属于单个对象。(博主个人见解,请理性看待)
▮this引用
//构造方法 public Point(int x,int y){ this.x = x; //实例变量与方法参数同名 this.y = y; }
在方法内部,当方法参数与对象的变量同名时,为了将两者区分开来,在对象的变量前加上“this.”来表示这是对象的变量。
▮创建对象和操作成员
▪创建对象
public static void main(String[] args) { Point p = new Point(1,2); // 创建对象 p.getCoordinates(); // 实例方法用“对象.”调用 Point.drawing(); // 类方法用“类.”调用 System.out.println("Point.tybe"); }
Point p:定义了一个类型为Point的引用:p,类似于C语言里的指针,但仅仅只是类似。new:Java的关键字,作用是创建对象,分配内存,返回指向该内存的引用。Point(1,2):Point的构造方法,在new的时候调用。
▪操作成员
实例成员只能用对象名访问,而类成员用类名访问。就算类成员可以用对象名访问也不要用对象名访问。
▮类与对象的生命周期
程序中一但出现类名,类就会被加载进内存,直到程序结束后再释放。所以,类在程序里只会加载一次,在出现类名的时候加载,一直保留到程序结束。
程序中每new一次对象,对象就会被加载进内存,当没有引用指向此对象,此对象就会被释放。所以,程序里可以加载多个对象,当对象无引用后就被释放。
▮进一步来了解类与对象(此处是博主个人理解,请理性看待)
▪类方法与实例方法的区别,跟类变量与实例变量的区别不一样
先提出两个问题,类中的实例方法是不是为所有对象所共用?类方法和实例方法的区别是什么?
实例方法和类方法的差别在于:实例方法里有着一个隐藏参数。这个参数用于接受当前实例方法所处的对象,“this.”实际上就是使用了这个参数。通过这个隐藏参数,实例方法才能访问对象里的实例变量和其他实例方法。类方法中没有这个参数,所以类方法里不能调用对象的实例成员,不能使用this,不能使用super(与继承有关)。
类变量是所有对象共用;实例变量是对象所独有;实例方法同类方法一样,为所有对象所共用,只是前者有个隐藏参数罢了。所以可以说,类方法是操作类的方法,实例方法是操作对象的方法;而不是,类方法是类的方法,实例方法是对象的方法。▪将类成员与实例成员分隔理解
类成员是属于类的,不是属于对象的。所以要用类名调用类成员,而不是靠对象。对象只是复制了类,从而得到了属于类的类成员。