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)访问类的成员方法:引用.成员方法

4.静态成员变量:
----不属于对象(1)被static所修饰
(2)调用:类名.静态成员变量



(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.创建一个对象,分为两步:

5.static与this的比较:

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中静态常量、常量、成员属性在内存中的存储

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代表的是当前对象的引用。
















