类和对象

类和对象

1.类

1.1 概念:类是一种实体类型的抽象,具有一系列相同特征和行为的物体。它也是一种数据类型。类只是仅仅定义了一些成员和方法,它不会去具体的操作这方行为,没有实际的意义。例如:我们盖房子时,开始时要先设计房子的整体架构,也就是图纸,而具体的操作还得需要一个实例去执行。
1.2 组成 :类由三部分组成。
(1)成员变量 :静态变量、实例变量
(2)成员方法 :静态方法、实例方法
(3)构造函数
1.3 类的三大特性:封装、继承、多态。
(1)封装性:就是将一些东西打包成一个整体。对用户隐藏其实现细节,使用该类的用户可以通过该类提供的接口来访问该类,使用户不能轻易的操作此数据结构,只能执行类允许公开的数据的一个小系统。保证了一定的安全性。
(2)继承性
1)定义: 它是子类继承父类的特征和行为,并且使子类的对象具有父类的实例和方法。
2)继承方式:通过extends关键字来是实现子类对父类的继承。被继承的类称为父类或超类或基类,而继承得到的类称为子类或派生类。子类继承父类的状态(属性)和行为(方法),同时也可以有自己的特征。
3)向上造型:基类的引用引用派生类对象,或者基接口的引用引用实现该接口的类对象。
4)好处:代码复用,减少代码的冗余度。
5)继承特性:java中只有单个继承,没有多继承。
例如:Worker类继承People类,那么它就拥有了People类里面的属性和方法的使用权限。

public class People {
    String name;//  1.实例变量/成员变量
    double age;

    People()
    {
        name = null;
        age = 0.0;
    }
    People(String name,int age)
    {
        this.name = name;
        this.age = age;
    }
    void eat()
    {
        System.out.println(this.name+"吃饭");
        playBall();
    }
    void playBall()
    {
        System.out.println(this.age+"打球");
    }
}
public class Worker extends People{
    public Worker()
    {
        super();
    }
    public static void main(String[] args) {
        Worker worker = new Worker();
        worker.playBall();
        worker.eat();

    }
}

(3)多态
1)定义:对一个消息做出了不同的反应,也就是可以采用不同的完成动作。
2) 实现多态的条件:1.继承 2.方法重写 3.向上造型
3)分类:
(1)编译期多态(静态绑定):方法重载,也就是函数名以及返回类型相同,但是参数不一样。例如系统提供的Arrays类的copyOf()方法。
(2)运行期多态(动态绑定):方法重写。
4)方法重写
实现原理:子类的地址覆盖掉父类的的地址。
例如:重写equals方法和compareTo()方法。

@Override
public boolean equals(Object obj) {
If(this == obj)
{
Return true;
}
    if(obj instanceof Student ) //匹配当前对象的关键字
    {
        Student student = (Student)obj;
        if(this.score == student.score)
        {//this是当前对象 obj是另外一个对象
            return true;
        }
    }
    return false;
}
@Override
public int compareTo(Student o) {
    if(this.score == o.score)
    {return  0;
    }else if(this.score > o.score)
    { return 1; }
    else
    { return -1;}}

例如:工人类继承了People类,也就是它通用了People类里面的方法和属性的使用权。
1.4 代码层面:一个类编译生成一个 .class 字节码文件。主要可用菱形继承解释。
例如:这是一个汽车类,里面定义了汽车的名字、颜色和数量属性,还有启动和停车行为。

public class Car {
    private String car_name;
    private String car_color;
    private String car_number;

    public Car(String car_name)
    {
        this.car_name = car_name;
    }

    public Car(String car_name, String car_color, String car_number) {
        this.car_name = car_name;
        this.car_color = car_color;
        this.car_number = car_number;
    }

    public void start()
    {
        System.out.println(car_name+"汽车开始启动");
    }

    public void stop()
    {
        System.out.println(car_name+"汽车已经停止");
    }
}

2.对象

2.1 概念 :它是类的实例化对象。它可以具体的操作类的一些属性和方法。
2.2 对象的大小 : 对象头(标记Class对象存放的地址)+实例变量+内存填充
2.3 一个类可以new多个对象,每一个对象都可以公平的去使用类的方法和属性。
例如:People类可以生成多个实例对象,每一个对象都可以调用类里面的方法。

class People1{
    private static int count;
    public People1()
    {
       count++;
    }
    public void fun()
    {
    }
    public static int getCount()
    {

        return count;
    }
}
public class ClassTestDemo {
    public static void main(String[] args) {
        People1 p1 = new People1();
        People1 p2 = new People1();
        People1 p3 = new People1();
        People1 p4 = new People1();
        System.out.println(People1.getCount());
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值