【JAVA】类和对象

一、OOP语言(面型对象设计语言)的三大特征:继承 封装 多态。

二、面向过程: 处理小问题;JAVA是基于面向对象的。

1.把冰箱打开 2. 把大象放入 3. 冰箱关起来

面向对象: 处理大问题;C语言是面向过程的。

打开冰箱,储存,关闭都是对冰箱的操作,是冰箱的行为。冰箱就是一个对象,所以只要操作冰箱所具备的功能,都要定义在冰箱中。

三、类和对象的概念
类: 模板 (图纸)
对象: 实体 (房子 ) 真真正正所存在的
一个类可以产生多个对象

四、定义类:自定义的一种类型(作用:用来产生对象的)

Class 类名{

类体;(成员变量;成员方法)

}

1.属性:字段/成员(实例数据成员、静态数据成员)

2.成员变量:public int age ;
静态成员变量:方法区
public static final int SIZE1 =20;
public static int count=10
(1)、静态成员的访问:类名.属性System.out.println(Person.count)
(2)、静态成员方法的调用: 类名.方法进行调用 。

所有被static修饰的不管是方法 、成员 ,他的调用或者访问,都只需要用通过类名.就可以做到。也就是说,所有被static修饰的不管是方法还是成员,都不依赖于对象。

(3)、main函数是static: 如果不是静态的,main函数的调用需要对象。

(4)、实例成员变量:public final int SIZE2 =30;//被final修饰的 不一定在方法区

Person person = new Person()
(对象)(在栈上)(在堆上)

【注意】
*person.count :(count是Person里面的,在堆上),其地址在栈上。
*Person.count :(不管有几个Person1/Person2…,方法区里面只有一个count),被static修饰的时候。

五、成员变量如果没有赋值,那么它的默认值就是自己所对应的0值:

引用类型: null (数组、类、 String)
简单类型: 0 (除了 char ‘\u0000’ boolean=false)

六、在静态方法内部,不能访问非静态的数据成员。
原因: 静态的方法不依赖于对象,对象是否产生,并不影响调用静态方法,而非静态的数据成员依赖于对象。

【public static int count】
public (static) void fun1(){
System.out.println(“count”+count);
}
【public String name】
[错误] public static void fun1(){
System.out.println(“name”+name);
}

七、Private:
私有的(也能修饰方法)只能在类里面访问

初始化方式:
(1)、提供一系列的get/set方法;Alt+insert (fn+esc解锁)
(2)、构造方法:构造对象,实例化对象new Person();方法名和类名是一样的。
【注意】
a. 如果在实现类的时候,没有写构造方法,编译器会自动生成一个不带有参数的构造方法。
b.但是,如果你自己写了一个不带有参数的构造方法,那么编译器不会为你自动生成一个带有单数的构造方法。

(3)、一个对象的产生分为两步:
a.为对象分配内存;
b.调用合适的方法(构造方法不止一个)

(4)this: 代表当前对象的引用
静态方法不依赖于对象,所以不能使用this。

this.成员变量;
this.成员方法 (都是非静态的/实例成员变量或方法);
this可以调用带有一个或一个以上参数的构造方法);

Public Person(){
this(“曹操”);必须放到第一行
System.out.println(“ ”);

}

Public Person(String name){
This.name=name;
System.out.println(“ ”);
}

Public Person(String name,int age){
this.name=name;
this.age=age;
System.out.println(“ ”);
}

构造方法也可以发生重载,如上所示
(函数名相同,参数变量不同,返回值不要求)

8.Object:任何类的父亲
toString
@Overrride 注解
重写

九、代码块

(1)本地代码块:方法内部代码
(2)实例代码块:类内部,方法的外部;
a.用来初始化类的实例数据成员;
b.实例代码块优先于构造函数执行。
(3)静态代码块:用来初始化静态的数据成员;
a.静态代码块不管生成多少个对象;
b.静态代码块优先于实例代码块;
c.同级,按顺序执行;
d.不管构造多少个对象,静态的东西只初始化一次;

发布了20 篇原创文章 · 获赞 23 · 访问量 567

猜你喜欢

转载自blog.csdn.net/m0_45097186/article/details/102770835