1.类的定义:

类的成员包括:字段、方法、代码块、内部类和接口。
class 类名{
类体(属性、行为(方法));
}
示例:

class Person {
    private String name;
    private int age;
    }
![实例化对象]()

2.成员方法:

调用–>通过对象的引用进行调用,必须实例化(new)对象,

class Person {
public int age = 18;
public String name = "张三";
public void show() {
System.out.println("我叫" + name + ", 今年" + age + "岁");
}
}
class Test {
public static void main(String[] args) {
Person person = new Person();
person.show();
}
}

注:new 关键字用于创建一个对象的实例.
使用 . 来访问对象中的属性和方法.
同一个类可以创建对个实例.

3.成员变量:

只要定义在类的内部,并且他不在方法内部的变量。

(1)引用类型:如果没有初始化,则默认值为null。

(2)简单类型:简单类型对应的0值(char->\u0000; boolean->false)

(3)一个类可以实例化多个对象。

(4)访问类的成员变量:引用.成员变量

(5)访问类的成员方法:引用.成员方法

Java类有多少要素 java类中包含哪些内容_总结:Java中的类和对象

4.静态成员变量:

----不属于对象

(1)被static所修饰

(2)调用:类名.静态成员变量

Java类有多少要素 java类中包含哪些内容_成员变量_02


Java类有多少要素 java类中包含哪些内容_静态方法_03


Java类有多少要素 java类中包含哪些内容_成员变量_04


(3) static:类名进行调用,被static所修饰的,都不依赖于对象。

(4)静态成员方法,为什么不可以调用实例成员变量?

原因:所有静态的方法或者成员变量,不依赖于对象;

实例成员变量的调用依赖于对象,必须产生一个对象的引用才能调用实例成员变量;但是实例方法内可以调用静态成员。

(5) 总结Static:

a) 修饰属性,Java静态属性和类相关, 和具体的实例无关. 换句话说, 同一个类的不同实例共用同一个静态属性.

b) 修饰方法:

如果在任何方法上应用static 关键字,此方法称为静态方法。

静态方法属于类,而不属于类的对象。

可以直接调用静态方法,而无需创建类的实例。

静态方法可以访问静态数据成员,并可以更改静态数据成员的值。

(6)注意事项

1): 静态方法和实例无关, 而是和类相关.

静态方法不能直接使用非静态数据成员或调用非静态方法(非静态数据成员和方法都是和实例相关的).

this和super两个关键字不能在静态上下文中使用(this 是当前实例的引用, super是当前实例父类实例的引用, 也是和当前实例相关).

5.整体代码:

class Person {
   //实例变量 存放在对象内
	public int age;
	//实例变量
	public String name;
	public String sex;//实例变量
	//类变量也叫静态变量,编译时已经产生,属于类本身,且只有一份。存放在方法区
	public static int count;
	//被final修饰的叫常量,也属于对象。 被final修饰,后续不可更改
	public final int SIZE = 10;
	//静态的常量,属于类本身,只有一份 被final修饰,后续不可更改
	public static final int COUNT = 99;
	//实例成员函数
	public void eat() {
	int a = 10;//局部变量
	System.out.println("eat()!");
}
	//实例成员函数
	public void sleep() {
	System.out.println("sleep()!");
}
	//静态成员函数
	public static void staticTest(){
	//不能访问非静态成员
	//sex = "man"; error
	System.out.println("StaticTest()");
	}
}
public class Main{
public static void main(String[] args) {
//产生对象 实例化对象
Person person = new Person();//person为对象的引用
System.out.println(person.age);//默认值为0
System.out.println();//默认值为null
//System.out.println(person.count);//会有警告!
//正确访问方式:
System.out.println(Person.count);
System.out.println(Person.COUNT);
Person.staticTest();
//总结:所有被static所修饰的方法或者属性,全部不依赖于对象。
person.eat();
person.sleep();
}
}

6.封装性

1.private:只能在类的内部进行访问;如果在类的外部进行访问,需要给属性设置set与get方法,进行访问set与get方法。

2.构造方法:方法名必须和类保持一致,没有返回值;它的作用是用来生成对象的。

3.构造方法可以构成重载关系。

4.创建一个对象,分为两步:

Java类有多少要素 java类中包含哪些内容_System_05


5.static与this的比较:

Java类有多少要素 java类中包含哪些内容_总结:Java中的类和对象_06

7.代码块

1.构造代码块(实例代码块):

//实例代码块
{
 = "aaa";
this.age = 12;
this.sex = "man";
System.out.println("I am instance init()!");
}

2.普通代码块:定义在方法中的代码块。
3.静态代码块:使用static定义的代码块。一般用于初始化静态成员属性。

//静态代码块
static {
count = 10;//只能访问静态数据成员
System.out.println("I am static init()!");
}

总结:静态代码块不管生成多少个对象,其只会执行一次,且是最先执行的。静态代码块执行完毕后, 实例代码块(构造块)执行,再然后是构造函数执行

8.toString方法

Person persopn = new Person();
System.out.println(perspn);
注:对于上面的打印语句,如果没有重写toString方法,它调用的是Object类的toString方法,输出的是:类名@地址的哈希值
1.toString 方法会在 println 的时候被自动调用.
2.将对象转成字符串这样的操作我们称为 序列化.
3.toString 是 Object 类提供的方法, 我们自己创建的 Person 类默认继承自 Object 类, 可以重写 toString 方法实现我们自己版本的转换字符串方法

9.匿名对象

1.匿名只是表示没有名字的对象.
2.没有引用的对象称为匿名对象.
3.匿名对象只能在创建对象时使用.
4.如果一个对象只是用一次, 则可以使用匿名对象。

10.Java中静态常量、常量、成员属性在内存中的存储

Java类有多少要素 java类中包含哪些内容_成员变量_07

11.this关键字

注:this表示当前对象引用(因为对象的实例化分为2步);可以借助 this 来访问对象的字段和方法。

class Person {
private String name;//实例成员变量
private int age;
private String sex;
**//默认构造函数 构造对象**
public Person() {
**//this调用构造函数;必须放在第一行进行显示**
this("KWB", 18, "man");
}
**//这两个构造函数之间的关系为重载。**
public Person(String name,int age,String sex) {
**//当形参与类当中的属性重名时,必须调用this关键字来区分。**
 = name;
this.age = age;
this.sex = sex;
}
public void show() {
System.out.println("name: "+name+" age: "+age+" sex: "+sex);
}
}
public class Main{
public static void main(String[] args) {
Person person = new Person();//调用不带参数的构造函数
person.show();
}
}

注意:在构造函数的内部,我们可以使用this关键字,构造函数是用来构造对象的,对象还没有构造好,我们就使用了this,那this还代表当前对象吗?当然不是,this代表的是当前对象的引用。