类和对象
面向对象概述
- 所谓对象就是某种事物的抽象(功能),抽象包括数据抽象和过程抽象两个方面,数据抽象就是定义对象的属性;过程抽象就是定义对象的操作(行为)。
- 面向对象的三(四)大特征:封装,继承,多态,(抽象)。
封装:把描述对象属性的变量及实现对象功能的方法结合起来,定义一个程序单位,并保证外界不能任意
更改内部的属性,不能任意调动内部的方法接口。
继承:大大增强了代码的可复用性,提高了软件的开发效率,为程序的修改扩充提供了材料。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();
}
}