类和对象

匿名 (未验证) 提交于 2019-12-03 00:05:01

类和对象

面向对象概述
  • 所谓对象就是某种事物的抽象(功能),抽象包括数据抽象和过程抽象两个方面,数据抽象就是定义对象的属性;过程抽象就是定义对象的操作(行为)。
  • 面向对象的三(四)大特征:封装,继承,多态,(抽象)。
    封装:把描述对象属性的变量及实现对象功能的方法结合起来,定义一个程序单位,并保证外界不能任意
    更改内部的属性,不能任意调动内部的方法接口。
    继承:大大增强了代码的可复用性,提高了软件的开发效率,为程序的修改扩充提供了材料。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();     } } 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!