class 类名{
属性、成员属性 成员变量
行为、成员方法
}
成员变量:
-
静态成员变量/类变量或类成员
-
非静态成员变量/普通成员变量
public static void main(String[] args) {
System.out.println(student.classRoom);
}
静态的成员变量不属于对象所以不用通过对象的引用来访问,直接可以通过类名就可以访问的。
静态的不依赖于对象。
成员方法:
- 静态成员方法/类方法
- 非静态成员方法
public void watchmovie() {// 看电影
System.out.println("看电影");
}
public void palywechat() { // 聊微信
System.out.println("聊微信");
}
public void setclock() { // 定闹钟
System.out.println("定闹钟");}
说明:
一般来说一个Java文件只写一个类,此处写到一起是为了能够直观观看!!!
一个Java文件只能有一个public类
通过类可以实例化对象 ——》 new。对象实际上就是一个实体。
此时name和age并没有赋值,但是此时不会报错,因为他们属于成员变量所以这里编译器会给他们默认值。如果是引用类型,那么默认为null;int float对应的0值。
boolean默认值false char 默认值‘\u0000’
- 当一个引用赋值为null的时候,代表:这个引用不指向任何对象!!!
- 引用能不能指向引用???
public static void main3(String[] args) {
//引用指向引用的例子:这个说法是不对的
Person person1 = new Person();
Person person2 = new Person();
person1 = person2;
}
由此可见不能!!!
person1 = person2;
这个代表person1这个印用指向了person2这个引用指向的对象。
3.一个引用能不能同时指向多个对象???
public static void main4(String[] args) {
Person person1 = new Person();
person1 = new Person();
person1 = new Person();
person1 = new Person();
person1 = new Person();
person1 = new Person();
}//最后person1只是指向了一个对象(最后一个)
要了解封装得了解访问权限,要了解访问权限得了解包
什么是封装?
对类的细节进行隐藏 提供公开的接口来进行和数据进行交互!!!
public class Test2 {
public void mainStaticFunc(){
}
public static void main(String[] args) {
/*Test2 test2 = new Test2();
test2.mainStaticFunc();*/
mainStaticFunc();
}
在静态方法内部,不能直接调用非静态的成员方法
普通成员方法内部是可以使用静态的成员方法的
public static void func(){
System.out.println(this.name);
System.out.println(name);
System.out.println("staticFunc");
}
在静态方法内部,不能够直接使用非静态的数据成员,只要是非静态的数据成员都需要通过对象的引用才能调用
静态方法里面是不能使用this的
public static int getSize() {
return size;
}
public static void setSize(int size) {
Student.size = size;
}
此时建议:获取静态的成员变量或者是设置静态的成员变量,此时的方法最好是静态的,否则你要是非静态的。就还需要实例化对象。多废手续!!!
对于静态成员变量的初始化:
- 直接赋值
public static String classRoom = "软工";
- 默认初始化
- 可以通过构造方法提供get和set方法进行初始化
public static int getSize() { return size; } public static void setSize(int size) { Student.size = size; }
- 在构造对象的时候可以在构造方法中进行赋值(不建议这样写)
public Student(String name, int age,int si) { this.name = name; this.age = age; size = si; }
- 通过代码块进行赋值
普通代码块:定义在方法内部的代码块
构造代码块/非静止代码块/实例代码块:类的里面,方法的外面
public String toString() {
return "数据是:{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
对于你想输出一个对象的引用的值的时候,如果你没有自己写一个toString方法,那么就会调用Object这个类的方法。如果自己写了,就调用自己的!!!
通过学习明白需要慢慢的、逐步的才能理解,不是学完立马见效的!!!