面向对象
//人,是一个类。打酱油,是人的一个动作, 也就是方法。
//小红是人的一个对象。让小红去打酱油,就是调用了人的 “打酱油” 方法。
public static void main(String[] args) {
// 对象
人 小红 = new 人();
// 调用方法 (叫她去打酱油)
小红.打酱油();
}
class 人 {// 类
//方法
public void 打酱油() {
System.out.println("去打酱油了");
}
}
类:
类是事物属性(外在特征)和行为(具备功能)的集合。例如:狗
类的定义:
注意:
使用static修饰的属性和方法 (静态的),可以直接使用类名调用,没有使用static修饰的,必须使用对象调用
对象:
对象是类的具体体现,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
对象声明:
声明一个对象,包括对象名称和对象类型。
实例化:
使用关键字 new 来创建一个对象。
初始化:
用 new 创建对象时,会调用构造方法初始化对象
对象具有属性和方法:
属性:
用于程序运行时保存数据
属性 (全局变量) :
在类中可以直接访问的量
一个Java文件中只能有一个public类,并且必须和文件名一样,可以没有这个类
在静态属性中 不可以调用非静态属性和方法 因为加载顺序不一样 类先被加载
在非静态属性中 可以直接调用静态属性和方法
在当前类中可以直接调用自身的属性和方法(不用.)
方法:
方法是一种将具有独立功能的代码块组织成为一个整体的编程概念,使其具有特殊功能,并且可以被重复调用。方法的定义包含了一个方法头和一个方法体。
具体来说,方法的基本结构包含以下部分:
1. 修饰符:修饰符是可选的,它用来告诉编译器如何调用该方法,并定义了该方法的访问类型。
2. 返回值类型:这是方法执行后返回的数据类型。有些方法可能无返回值。
3. 方法名:这是标识方法的名称。
4. 参数列表:参数是进入方法中的数据,有了这些数据,方法才能执行其逻辑。
5. 方法体:这是执行特定任务的代码块。
类型变量:
局部变量:
在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
成员变量:
成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
类变量(静态变量):
类变量也声明在类中,方法体之外,但必须声明为 static 类型
代码块:
成员代码块:
实例化对象时运行,先运行成员代码块,再运行构造方法
静态代码块:
在类被加载时运行,优先运行静态代码块(先父类后子类)
补充:
Java中除了基本数据类型 其他的就是引用类型 所有引用类型的默认值都为null ;基本数据类型没有属性和方法,基本数据类型不是面向对象的 ,基本数据类型不能保存null值 ;Java为了实现万物皆对象的理念,提供了基本数据类型的封装类型
Byte Short Integer Long Float Double Boolean Character
面向对象三大特性:封装、继承、多态
封装:
将类中的属性和方法,通过访问权限修饰符,控制访问(调用)权限
访问权限修饰符(依次减小):
public 公共的 谁都可以访问
protected 受保护的(家族性的) 只有子类本包下的类以访问
default 默认的(本包下的)
private 私有的(自生类中的)
继承:
继承可以使用 extends 和 implements 这两个关键字来实现继承,子类继承父类 子类就拥有父类中声明的属性和方法 Java中只能单继承 一个类只能有一个直接父类 但Java中可以依次多重继承
- 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
- 子类可以用自己的方式实现父类的方法。
- 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。
- 继承的作用:减少代码的编写 , 规范了子类的行为
- super 与 this 关键字:
我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。
this关键字:指向自己的引用。
总结:
多态:
同一操作作用于不同对象,可以有不同的解释,产生不同的执行结果
静态多态(方法重载)----编译时多态:
方法的重载:
方法重载的一个类中方法名一样,即为重载
参数列表确定调用的方法:
1、参数的类型
2、参数的个数
3、参数的顺序
动态多态(方法重写)------运行时多态:
方法的重写:
子类继承父类,对继承过来的方法进行重新定义,通过 @Override 验证是否是重写的方法
注意:
重写的方法 ,子类访问权限不能小于父类的访问权限;
重写的方法的返回值可以返回子类对象;
父类的变量可以指向任意子类对象,子类重写父类方法引发多态。
重写的静态方法只能更精确,可以返回对象。
限制:用static修饰的方法(静态的)不能被重写
变量调用静态方法取决于声明的类型