Java面向对象(第一篇)

面向过程与面向对象

1.Java类以及类的成员:属性,方法,构造器,代码块,内部类

2面向对象的三大特征:封装性,继承性,多态性(抽象性)

其他关键字:this,super,static,final,abstract,interface,import

“人把大象装进冰箱”

1.面向过程,强调的是具体功能行为,以函数为最小单位,考虑怎么做

  1. 把冰箱门打开
  2. 把大象塞进入
  3. 把冰箱门关闭

2.面向对象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做

  1. 人{
    打开(冰箱){
    冰箱.开开();
    }
    抬起(大象){
    大象.进入(冰箱);
    }
    }
    冰箱{
    开开(){}
    关闭(){}
    }
    大象{
    进入(冰箱){}
    }
    在这里插入图片描述

Java面向对象的两个要素

  1. 类:对一类事物的描述,是抽象的,概念上的的定义
  2. 对象 :是实际存在的该类事物的每个个体,因而也称为实例(instance)

面向对象的思想概述

1.可以理解为: 类=抽象概念的人; 对象=实实在在的某个人
2.面向对象程序设计的重点是类的设计
3.类的设计,其实就是类的成员的设计

**

类与类的成员

**
引言:生物世界中细胞又是由什么构成的呢?细胞核,细胞质…,Java中用类class来描述事物也是这样的,常见类的成员有:1.属性:对应类中的成员变量,2.行为:对应类中的成员方法

class Person {
        //    属性:对应PersonTest类的成员变量(三个)
        String name;
        int age;
        boolean isMale;

        //   行为:对应类中的成员方法
        public void eat() {
            System.out.println("人会吃饭");
        }

        public void sleep() {
            System.out.println("人会睡觉");
        }

        public void talk(String langauge) {
            System.out.println("人会交流" + langauge);
        }
    }

**

类的实例化:即创建类的对象(创建类的对象)

**
类和对象的使用(面向对象思想落地的体现)

  1. 创建类,与设计类的成员
  2. 实例化类即创建对象
  3. 通过”对象.属性","对象.方法"来调用对象结构
package Study;
public class PersonTest {
    public static void main(String args[]) {
        //创建Person对象
        Person p1 = new Person();
        //调用对象结构:属性,方法;
        //调用属性 "对象.属性"
        p1.name = "Tom";
        p1.age = 22;
        System.out.println(p1.name + " " + p1.age);
        p1.eat();
        p1.sleep();
        p1.talk("英语");

    }

    static class Person {
        //    属性:对应PersonTest类的成员变量(三个)
        String name;
        int age;
        boolean isMale;
        //   行为:对应类中的成员方法
        public void eat() {
            System.out.println("人可以吃饭");
        }
        public void sleep() {
            System.out.println("人可以睡觉");
        }
        public void talk(String language) {
            System.out.println("人可以交流"+language);
        }
    }
}

体会类的多个对象之间的关系

如果创建一个类的多个对象,则每个对象都独立拥有一套类的对象。(非static的)意味着,如果我们修改一个对象的属性a,则不影响另一个对象属性a的值。

package Study;
public class PersonTest {
    public static void main(String args[]) {
        //创建Person对象
        Person p1 = new Person();
        //调用对象结构:属性,方法;
        //调用属性 "对象.属性"
        p1.name = "Tom";
        p1.age = 22;
        System.out.println(p1.name + " " + p1.age);
        p1.eat();
        p1.sleep();
        p1.isMale=true;
        p1.talk("英语");
//--------------------------------------------------------------------------------------------------------
        //体会类的多个对象的关系
        Person p2=new Person();
        System.out.println(p2.name);//null?Tom 或者是报错
        //输出结果为null
        System.out.println(p2.isMale);//p1.isMale=true,但输出p2.isMale==false;
//-----------------------------------------------------------------------------------------------------------
    }

    static class Person {
        //    属性:对应PersonTest类的成员变量(三个)
        String name;
        int age;
        boolean isMale;
        //   行为:对应类中的成员方法
        public void eat() {
            System.out.println("人可以吃饭");
        }
        public void sleep() {
            System.out.println("人可以睡觉");
        }
        public void talk(String language) {
            System.out.println("人可以交流"+language);
        }
    }
}

将p1变量保存的对象地址值赋给p3,导致p1和p3指向了堆空间中的同一个对象实体

      Person p3=p1;
        System.out.println(p3.name);//Tom;
        p3.age=98;
        System.out.println(p1.age);//98;

全部代码:

package Study;
public class PersonTest {
    public static void main(String args[]) {
        //创建Person对象
        Person p1 = new Person();
        //调用对象结构:属性,方法;
        //调用属性 "对象.属性"
        p1.name = "Tom";
        p1.age = 22;
        System.out.println(p1.name + " " + p1.age);
        p1.eat();
        p1.sleep();
        p1.isMale=true;
        p1.talk("英语");
//--------------------------------------------------------------------------------------------------------
        //体会类的多个对象的关系
        Person p2=new Person();
        System.out.println(p2.name);//null?Tom 或者是报错
        //输出结果为null
        System.out.println(p2.isMale);//p1.isMale=true,但输出p2.isMale==false;
//-----------------------------------------------------------------------------------------------------------
   //将p1变量保存的对象地址赋值给p3,导致p1和p3指向了堆空间中同一个对象实体
        Person p3=p1;
        System.out.println(p3.name);
        p3.age=98;
        System.out.println(p1.age);//98
    }

    static class Person {
        //    属性:对应PersonTest类的成员变量(三个)
        String name;
        int age;
        boolean isMale;
        //   行为:对应类中的成员方法
        public void eat() {
            System.out.println("人可以吃饭");
        }
        public void sleep() {
            System.out.println("人可以睡觉");
        }
        public void talk(String language) {
            System.out.println("人可以交流"+language);
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值