类和对象

类和对象

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

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 初始化顺序

  1. 子类的初始化顺序:
    静态变量–>静态块–>实例变量–>实例块–>构造方法
  2. 父类与子类的初始化顺序
    父类(静态变量,静态块)–>子类(静态变量,静态块)–>父类(实例变量,实例块,构造方法)–>子类(实例变量,实例块,构造方法)
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();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值