/**
*
* @author 沉默小吴
@Date 2024年7月29日下午8:33:21
*
*/
public class Test {
//一、面向对象===========================
//1.1概述=============================
/*
* 什么是面向对象?
*
* 面向对象是相对于面向过程来讲的,面向对象方法,
*
* 把相关的数据和方法组织为一个整体看待,从更高层次
*
* 来进行系统建模,更贴近事物的自然运行模式
*
*
*/
//1.2面向对象和面向过程====================
/*
* 面向过程:侧重分步骤,
*
* 面向对象:侧重分模块
*
*/
//1.3构造方法============================
/*
* 构造方法:只要就是用于创建对象时调用,并给对象的初始化赋值
*
* 权限修饰符: 方法名/类名(参数列表){方法体}
*
* 构造方法没有返回值,连void都没有,另外构造方法的方法名必须和类名一致
*
* 如果类中,没有定义构造方法,则默认有一个公共的无参构造public类名(){}
*
* 但是我们定义了构造方法,则不会在提供默认的无参构造
*
* 所以一般我们在构造方法的时候也会手动创建一个无参构造
*
*/
public Test(int i){
}
public Test(){
}
//1.4类和对象=============================
/*
* 对象:
*
* 1.代码角度:new的一个实例,封装了成员属性
*
* 2. 数据角度:封装数据和逻辑的一种方式
*
* 3.现实角度:对象就是某一个具体的个体一切皆对象
*
* 4.设计角度:从一个实体对象中抽象出来某些属性的一种实体表示
*
* 类:描述了一类事物的属性和特征
*
* 类中封装属性,对象封装属性值
*
*/
//1.5实例化====================================
/*
* 1.加载相关类到方法区
*
* 2.在堆内存开辟内存空间
*
* 3.调用构造方法,栈内存开辟栈帧,并对内存进行数据初始化
*
* 4.构造方法弹栈,把堆内存内存地址返回
*/
//1.6对象使用==================================
public static void main(String[] args){
Student student1=new Student(1001,"张三",false,18,"石家庄");
Student student2=new Student(1002,"李四",false,19,"北京");
//对象.成员属性
student1.setName("王五");
System.out.println(student1.getName());
System.out.println(student2.getName());
//1.7Bean==========================================
/*
* 属性私有化,提供对应的getter/setter方法,提供有参构造和无参构造
*
* POJO : 普通实体类
*
* Model : 一般会和数据库表一一对应
*/
//1.8常见异常===================================
Student s1=new Student();
s1.num=3;
s1=null;
//当使用null值,访问成员属性时,会出现空指针异常
System.out.println(s1.num);
//1.9对象调用静态属性=======================================
Student student3=new Student();
Student student4=new Student();
student3.num=3;
System.out.println(s1.num);
//编译后,会自动把student3和student4转变为Student类名调用
//所以,尽管student3是null访问静态属性,也不会出现空指针
student3=null;
System.out.println(student3.num);
System.out.println(student4.num);
//1.10注释事项==================================
//1.10.1静态调用成员=================
//需要创建对象调用
//1.10.2传值和传引用==================
Animal a=new Animal(18);
m1(a);
System.out.println("main:"+a.age);
}
public static void m1(Animal a){
a.age=22;
System.out.println("m1:"+a.age);
}
//1.10.3 区分成员方法和构造方法=====================
//就看有没有返回值类型,没有就是构造方法===================
}
.age=22;
System.out.println(“m1:”+a.age);
}
//1.10.3 区分成员方法和构造方法=====================
//就看有没有返回值类型,没有就是构造方法===================
}