类和对象
面向对象概述
- 所谓对象就是某种事物的抽象(功能),抽象包括数据抽象和过程抽象两个方面,数据抽象就是定义对象的属性;过程抽象就是定义对象的操作(行为)。
- 面向对象的三(四)大特征:封装,继承,多态,(抽象)。
封装:把描述对象属性的变量及实现对象功能的方法结合起来,定义一个程序单位,并保证外界不能任意
更改内部的属性,不能任意调动内部的方法接口。
继承:大大增强了代码的可复用性,提高了软件的开发效率,为程序的修改扩充提供了材料。Java 不支持多继
承(菱形继承方式),为了弥补 Java 不支持继承带来的子类不能享用多个父类的成员缺憾,我们在后面的学习中会
引入“接口”这个概念。
多态:同一个方法名,根据被调对象的不同,实现了不同的行为。
主要分成静多态(方法的重载)和动多态(继承,重写,向上造型)。
抽象:使用了关键词abstract声明的类叫作“抽象类”。如果一个类里包含了一个或多个抽象方法,类就必须指定成abstract(抽象)。“抽象方法”,属于一种不完整的方法,只含有一个声明,没有方法主体。
类和对象概述
1. 类的概念
- 类是一种新的数据类型,类定义数据类型的属性(变量,字段),行为(方法)。对象是基于类的具体实现,又称为类的实例。
- 类是一个抽象概念 , 对象是类的具体实现
- 类所定义的对象是不唯一的,依需求(需要)而定
例: 定义一个类,人(People)
按照个体分,对象:姓名,年龄…
class People{ //类名 String name; //对象(类的属性) int age; }
按照人种分,对象:黄种人,白种人…
class People{ String yellowRace; String whiteRace; }
2. 类的声明
声明一个类就是创建一个新的数据类型,而类在java中属于引用数据类型。java使用关键字class来声明类。类的声明如下:
[类修饰符] class 类名 [extends 基类] [implements 接口列表]{ 类体 }
注:
- 1.“[ ]”意为“可选”
2.class 关键字,首字母小写
3.类体:用于定义该类的成员,包括在一对花括号之内,类体可以为空
3. 类的可访问性
类的成员
类中的主要成员:
- 属性(变量)->字段(静态字段,实例字段,常量字段)
- 行为(方法)
1. 创建和使用对象
类是抽象的,要使用类定义的功能,必须实例化类,即创建类的对象。
1.1 静态成员
- 静态成员一般通过类名来引用:类名.静态字段名。如果对象直接引用会出现编译警告。
- 一个静态字段共享同一个存储位置。
1.2 实例成员
-实例成员必须通过对象实例来引用:对象.实例字段名。
注:
- 静态字段是共有的,不能被对象引用
实例字段是独有的,不能用类名引用
2. 方法
2.1 构造方法
构造方法用于执行类的实例的初始化工作,构造方法又称为构造函数。创建对象时,根据传入的参数列表,将调用相应的构造方法。
每个类都有构造方法,如果没有显式声明构造方法,编译器会自动生成一个默认的无参数的构造方法。
- 构造方法特征:
- 构造方法的名称与类名相同
- 构造方法不能声明返回类型(也不能用void),也不能返回值
- 构造方法中,一般不要做对类的实例进行初始化以外的事情
- 构造方法不能通过 “对象.” 来调用。
class People{ String name; int age; People(String name,int age){ //构造方法(用于初始化) this.name=name; this.age=age; }
2.2 静态方法和实例方法
- 使用 static 修饰符声明的方法为静态方法,静态方法不对特定实例进行操作,并且只能访问静态成员
- 不使用 static 修饰符声明的方法为实例方法,实例方法对类的某个给定的实例进行操作,并且能够访问静态成员和实例成员
2.3 初始化顺序
- 子类的初始化顺序:
- 父类与子类的初始化顺序
class T{ public T(){ System.out.println("实例变量"); } } class StaticT{ public StaticT(){ System.out.println("静态变量"); } } class People2{ private T name = new T(); private static StaticT a = new StaticT(); //实例块 { System.out.println("实例块"); } //静态块 static { System.out.println("静态块"); } public People2(){ System.out.println("构造方法"); } }
类和对象示例
class People{ //类名 String name; //定义类的属性 int age; People(String name,int age){ //构造方法 this.name=name; //初始化 this.age=age; } void eat(){ //方法(行为) System.out.println(name+”在吃饭”); } Void sleep(){ Systm.out.println(name+”在睡觉”); } Void hitbean(){ System.out.println(name+“在打豆豆”); } } public class Person{ public static void main(String[] args) { People people= new People(“zs”,10); //对象的初始化 people.eat(); //对象调用方法 people.sleep(); } }
来源:51CTO
作者:帆好烦
链接:https://blog.csdn.net/qq_41094819/article/details/100673388