*
* 1.第一次遇见Person的时候,进行类的加载(只加载一次)
* 2.创建对象,为对象在堆中开辟空间
* 3.为对象进行属性的初始化动作
*
* new关键字实际上是在调用构造方法(构造器)
* 调用构造器时,如果没有写构造器,会默认分配一个构造器,构造器的作用不是为了创建对象,
* 因为在调用构造器前对象已经创建好了,并且属性有默认的初始化的值,调用构造器的目的是
* 为了给属性赋值。但是一般不会在空构造器中初始化,那样的话每个对象的属性值都一样了
* 一般在重载的构造器中赋值,加入重载后没写空构造器就不能调用空构造器了
*
* this始终指向的是当前对象
* 在同一个类中,方法可以互相调用,this.add() this可以省略
* 同一个类中构造器可以互相调用,但是this修饰的构造器必须放在第一行
* this可以修饰:方法 属性 构造器this(age)
*
* static修饰:属性 方法 代码块 内部类
* 1.类加载的时候一起载入方法区的静态域中
* 2.先于对象存在,即使没有对象也可以访问
* 3.访问方式:对象. 类型.(推荐方式)
*
* static应用场景:某些特定的数据需要在内存中共享,只有一份,如学校都一样
* 可以static String school; 方法中写Student.school = "文华学院";
*
* 所以属性可分为:
* 静态属性(类变量)
* 非静态属性(实例变量)
*
* (static和public是并列关系,没有先后顺序)
* 在静态方法里不可以访问非静态属性?为什么呢?
* 答:因为静态的static修饰的东西如:属性和方法是先于对象加载的,此时如果没
有对象你是怎么访问呢!非静态的属性和方法还没有加载,这是一个时间不同步的问题。
*
* 在静态方法中不能使用this
*
* 代码块:普通块,构造块,静态块,同步块(多线程)
* 普通块:在方法中,限定了局部变量的作用范围 {}
* 构造块:在方法外 {}
* 静态块:前面有static修饰 static{}在静态块中只能访问静态属性和方法
*
* 代码块执行顺序:
* 1.静态块,一般用于数据库初始化,创建工厂,用于一些全局性的初始化操作
* 2.构造块(不常用)
* 3.构造器
* 4.普通块(方法中的)
*
* 包名:
* 1.名字全用小写
* 2.中间用.隔开,隔开一下就是一个目录,其实的是盘符中的目录,所以不能使用系统中的关键字
* 3.一般是公式域名的倒写加上module:com.matrix.login
* 4.就是为了定位文件的位置,同一个包下的类不需要导包
* 5.java.lang下的包不需要导包
* 6.java中的包没有包含与被包含的关系,是平级的
* 7.静态导入的问题import static java.lang.Math.*;
例子:Garage\Oop\src\com\ops\Test.java
*
* 继承:is-a关系
1.提高代码的复用性,父类定义的内容,子类直接可以拿过来使用
2.子类具备扩展性
3.一个子类只能有一个直接父类
4.继承具有传递性:Student--->Person--->Object
*
* super:
1.super指代父类的
2.在父子类关系中,super可访问父类属性和方法
3.super可调用父类构造方法,用于构造父类以做好准备
THINK:创建对象后要调用构造方法初始化成员变量,那么对于父类中的
成员变量就需要使用父类的构造方法
*
* Object类
1.所有的类都直接或者间接的继承自Object类,Object是java所有类的根基类
* 2.toString()对对象的自我介绍:com.oop1.Student@4554617c
com.oop1.Student 全限定路径
4554617c hashcode将对象在堆中的地址进行哈希算法,返回一个哈希码
对象--->堆中分配地址--->进行哈希操作--->哈希码--->转成十六进制--->String
*
重写toString() 子类重写之后就调用子类的
重写equals()
@override
* public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return age == student.age &&
Double.compare(student.height, height) == 0 &&
name.equals(student.name);
}
*
* 类和类之间的关系:
1.将类作为另一个类的方法形参
2.将一个类作为另一个类的属性
3.继承、实现
*
//从子类往上抽取父类叫:泛化 父到子叫:继承
* 多态:
1.多态指的是方法,与属性无关
多态就是多种状态,同一行为在不同类中表现出不同的状态,多态指的是同一种
方法的调用,根据对象不同产生不同的行为
Animals animals = new Dog();
左侧:编译期的类型
右侧:运行期的类型
2.多态的要素:
继承
重写
父类引用指向子类
向下转型,为了获取子类中特有的内容,父类只能看到有限的东西
*
*
* final修饰符:
1.final修饰变量
2.final修饰方法,不可被子类重写
3.final修饰类,子类不能继承extends,那么里面的
Java基础笔记(个人总结)
最新推荐文章于 2024-08-23 18:16:49 发布
本文详细总结了Java基础,包括语法特性、面向对象编程概念、异常处理、集合框架及IO流等核心知识点,结合个人编程经验深入浅出地阐述了每个主题的理解与应用。
摘要由CSDN通过智能技术生成