- 在C语言中强调的是实现的过程,分析步骤,逐步解决问题。在JAVA中关注的是对象,将事情分解成不同的对象,通过对象之间的交互来实现。
- 类是一类对象的统称,对象就是一个类的实例化。
- 我们在解决问题的时候不必过分的关注过程,只需要了解对象的功能,并且能够使用它的功能就可以了。一个类可以实例化无数个对象。
声明一个类就是创建一个新的数据类型,而类在java中属于引用类型, java使用class关键字来声明一个类
//创建类 class{ field;//成员属性 method;//成员方法 } //实例化对象 <对象名> = new ();
class为定义类的关键字,class_name为类名,{}为类的主体。
类中的元素称为:成员属性
类中的函数称为:成员方法
class Car{ public int siza;//成员属性,实例变量 public String colour; public String name; public void drive{ //成员方法 Syste.out.println("这是我的车"); } }类的实例化
用类类型创建对象的过程,称为类的实例化
1.类只是一个模型,限定了类有哪些成员
2.一个类可以实例化多个对象,实力化出的对象占用实际的物理空间,存储类成员变量
3.类是设计的图纸,而由类实例化出来的对象就是实际存在的。
class Car{ public int siza;//成员属性,实例变量 public String colour; public String name; public void drive{ //成员方法 Syste.out.println("这是我的车"); } } public class Main{ public static void main(String[] args ){ Car car = new Car();//通过new实例化对象 car.drive();//成员方法的调用通过对象的引用调用 Car car1 = new Car(); //实例化对象 Car car2 = new Car(); } }
注意
- new关键字用于创建一个实例对象
- 使用.来访问对象中的属性和方法
- 同一个类可以创建多个实例
`类的成员可以包括一下:字段,方法,代码块,内部类和接口等
字段,属性,成员变量在类中方法的外部定义的变量,可以称为"字段"或
“属性"或"成员变量”
注意
- 使用.访问对象的字段
- "访问"既包含读,也包含写。
- 对于一个对象的字段如果没有显式设置初始值,就会被设置为一个初始值。
默认值规则 - 对于各种数字类型,默认值为0
- 对于boolean类型,默认值为false
- 对于引用类型(String,Array,以及自定义类)默认值为null;
null
null在java中为"空引用",表示不引用任何对象,类型C语言的空指针,如果对null进行.进行 *** 作就会引发异常。
字段就地初始化
我们经常需要将字段设定显式初始值
class Car{ public int siza = 1;//成员属性,实例变量 public String colour; public String name; public void drive{ //成员方法 System.out.println("这是我的车"); } } public class Main{ public static void main(String[] args ){ Car car = new Car();//通过new实例化对象 car.drive();//成员方法的调用通过对象的引用调用 Car car1 = new Car(); //实例化对象 Car car2 = new Car(); System.out.println(car.siza); } }
方法
方法用于描述一个对象的行为。
class Car{ public int siza;//成员属性,实例变量 public String colour; public String name; public void drive{ //成员方法 Syste.out.println("这是我的车"); } } public class Main{ public static void main(String[] args ){ Car car = new Car();//通过new实例化对象 car.drive();//成员方法的调用通过对象的引用调用 Car car1 = new Car(); //实例化对象 Car car2 = new Car(); } }
static关键字
- 修饰属性
- 修饰方法
- 代码块
- 修饰类
java静态属性和类相关,和具体实例无关,同一个类的不同对象公用同一个静态属性
class Car{ public static int siza;//成员属性,实例变量 public String colour; public String name; public void drive{ //成员方法 Syste.out.println("这是我的车"); } } public class Main{ public static void main(String[] args ){ Car car = new Car();//通过new实例化对象 car.drive();//成员方法的调用通过对象的引用调用 Car car1 = new Car(); //实例化对象 Car car2 = new Car(); } }
在这种情况下,多个对象访问使用的是同一个静态对象。并且静态变量被存储在方法区内。
修饰方法
如果在任何方法上应用static关键字,此方法就被称为静态方法。
- 静态方法同样属于类,
- 不需要实例化对象通过类就可以调用静态方法
- 静态方法可以访问静态数据成员,并且可以更改静态数据的值
注意 - 静态方法不能直接访问非静态成员变量或者调用非静态方法
- this和super两个关键字不能静态上下问使用,他们都涉及到实例对象。
private实现封装
private/public两个关键字表示"访问权限控制"
-public修饰的成员变量或者成员方法,可以直接被类的调用者使用。 - private修饰的成员变量或者成员方法,可以直接被类的调用者使用。
类的调用者根本不用知道一个类有多少private成员
使用private封装属性,并提供public方法供类的调用者使用 - private不仅能修饰字段,也可以修饰方法
- 方法访问权限的设置要结合具体情况
构造方法是在使用关键字new实例化新对象会被自动调用,用于完成初始化。
new执行过程
- 为对象分配内存空间
- 调用对象的构造方法
语法 - 方法名称必须与类名称相同
- 构造方法没有返回值类型声明
- 每一个类中至少有一个构造方法(构造方法支持重载,如果没有,系统就会自动生成一个构造方法,并且没有参数)
- 如果定义了构造方法,则默认的无参构造将不再生成
代码块
使用{}定义的一段代码
根据代码块定义位置以及关键字,分为四种: - 普通代码块
- 构造块
- 静态块
- 同步代码块
普通代码块
定义在方法中的代码块
public class Main{ public static void main(String[] args) { { //直接使用{}定义,普通方法块 int x = 5 ; System.out.println("x1 = " +x); } int x = 6 ; System.out.println("x2 = " +x); } }
构造代码块
- 定义在类中的代码块(不加修饰符)实例代码块。(构造代码块一般用于初始化实例成员变量)
- 实例代码块优先于构造函数执行
静态代码块
使用static定义的代码块一般用于初始化静态成员变量(只能访问静态数据成员)。 - 静态代码块不管生成多少对象,只会执行一次,且是最先执行的
- 静态代码块执行完毕后,实例代码块执行,然后是构造函数。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)