【类和对象】的初学思考20211102
代码:
class Person {
//1. 成员变量:存储时是否静态,访问时是否公开
private int age;//实例非静态变量,依赖对象,公开表示其他方法可以直接访问
private static int staticAge;
public double height;
public static double staticHeight;
//2. 成员方法
//2.1 静态代码块
static {
staticAge=18;
}
//2.2 实例代码块
{
age=18;
}
//【成员变量的内部引用】
//2.3 private类成员变量
public void setAge(int age) {//需要公开的接口,set和get方法
this.age = age;
}
public int getAge() {
return this.age;
}
public static int getStaticAge() {
return staticAge;
}
//2.4 public类成员变量
public void eat(int age){//实例方法
this.age=age;//this表per对象,因为已经构造完,对象产生了
staticAge=18;//实例方法可以访问静态成员变量
}
public static void staticEat(int age){//静态方法只能访问静态成员变量
staticAge=age;//静态成员变量依赖类(在对应类里面可以直接写)
//Person.staticAge=age; 也正确
}
//方法一般public类,没必要封装
}
public class Test01 {
public static void main(String[] args) {
//产生对象,实例化对象
Person per=new Person();//自动创建构造方法Person()
//【成员变量的外部引用,需要传参】
//1)private类变量需要建立公共的接口:set和get
System.out.println("private类的age="+per.getAge());
System.out.println("private类的staticAge="+Person.getStaticAge());
//2)public类变量不需要公共接口,直接引用
per.eat(18);
Person.staticEat(18);
//总结:变量存储看是否静态,变量外部引用看是否公开,内部引用习惯用this表对象;
}
}
从Test01类的main函数开始分析:
public class Test01 {
public static void main(String[] args) {
//产生对象,实例化对象
Person per=new Person();//自动创建构造方法Person()
//【成员变量的外部引用,需要传参】
//1)private类变量需要建立公共的接口:set和get
System.out.println("private类的age="+per.getAge());
System.out.println("private类的staticAge="+Person.getStaticAge());
//2)public类变量不需要公共接口,直接引用
per.eat(18);
Person.staticEat(18);
//总结:变量存储看是否静态,变量外部引用看是否公开,内部引用习惯用this表对象;
}
}
对象的创建 Person per=new Person();
Person per=new Person();
//等价于
//1. Person per;
//2. per=new Person();
分析过程看:
Q:填充对象时,对象内部的变量(/常量)如何分配空间?
A:存放看是否静态。1)实例成员变量:依赖对象,存放在堆的per里;2)静态成员变量:存放在方法区,因为静态的不依赖对象;
接着,成员变量的外部引用
//【成员变量的外部引用,需要传参】
//1)private类变量需要建立公共的接口:set和get
System.out.println("private类的age="+per.getAge());
System.out.println("private类的staticAge="+Person.getStaticAge());
//2)public类变量不需要公共接口,直接引用
per.eat(18);
Person.staticEat(18);
成员方法的引用看开头总代码
总结
变量存储看是否静态,变量外部引用看是否公开,内部引用习惯用this表对象;
细节可能看起来乱,但多敲代码,多去从main开始一行行分析,细节自然懂。

浙公网安备 33010602011771号