面向对象(一)

基本概念总结:

1.面向对象和面向过程的区别:

面向过程:关注的是功能行为(问题解决,步骤)
面向对象:面向对象时面向过程的升级,将功能行为进行进一步的抽象,关注是具备了某种功能的角色,面向过程让程序员从执行者升级为指挥者。

2.类和对象

类:对一类事物的描述(抽象的,概念上的)或者说是对现实世界事物的抽象定义,也是我们创建对象的模板。
对象:实例(具体的个体)

类:具有属性和方法
特征:一类事物的共性,在类中用属性来描述。
行为:一类事物所具有的行为,在类中用方法来描述。

类中的属性由成员变量来描述。这些属性可以称之为对象属性(实例变量)
成员变量没有显示赋值时,默认为0,不同的类型解析为不同的解释。如:Boolean型为false, String型为null。

判断有无新对象产生在于new。

重要:对象只能用引用类型的变量接收,并且该引用变量保存的是对象的内存地址,不是对象的本体

垃圾对象:没有引用指向它。
对象之间互相独立互不干扰。只要new,就创建一个新的对象。
new出来的东西都保存在堆中。

例子:(创建对象的语法: 类名 对象的引用名 = new 类名();

注:操作对象,其实是在操作对象的引用
引用间的赋值,是将引用中保存的地址copy给另一个引用(和变量间的赋值一样)

/**
    写一个学生类Student
    特征和行为都是抽象(抽出来像的东西)出来的,(将学生类中共有的特性描述出来)

    特征,行为具有概括性

    特征:姓名,学号,专业(profession)
    行为:吃饭,学习,say()作自我介绍
*/
public class Student {
    //特征,用成员变量来描述
    String name;        //对象属性(实例变量)
    int num;            //对象属性(实例变量)
    String profession;  //对象属性(实例变量)
    //行为,用成员方法来描述
    //吃饭
    public void eat() {
        System.out.println("吃饭!");
    }
    //学习
    public void study() {
        System.out.println("学习!");
    }
    //say()作自我介绍
    public String say() {
        return "姓名:" + name + "\t学号:" + num + "\t专业:" + profession;
    }
}
/**
    测试类StudentTest,创建一个Student对象,给对象的属性赋值,
    调用对象的方法,打印输出对象的自我介绍
*/

public class StudentTest {

    public static void main(String[] args) {
        /*  
            对象的创建:对象只能保存在引用变量中
            类名 对象的引用名 = new 类名();   (也可以叫做对象,但是要时刻知道它只是对象的一个引用,保存着对象的地址,不是对象本体)
            创建对象的步骤:
            1)在内存中开辟一块类型为Student,名字为s的引用变量区域
            2)依据类模板创建一个对象
            3)将对象的地址赋值给s

        */
        Student s = new Student();
        //给对象的属性进行赋值(不是初始化赋值)
        s.name = "沈yl";
        s.num = 102;
        s.profession = "计算机";
        //调用对象的方法
        s.eat();
        s.study();
        System.out.println(s.say() + "这是s");
        System.out.println("----------------------------------------------");
        //把s中保存的地址赋值给引用变量s1
        //(赋值操作,(将s中保存的地址copy,然后写入了s1),
        //s若发生改变,s1中的地址不会改变(copy过去的))
        Student s1 = s;
        System.out.println(s1.say() + "这是s1");
        System.out.println("将s引用指向新的对象看s1是否发生改变");
        s = new Student();
        System.out.println(s.say() + "这是s");
        System.out.println("----------------------------------------------");
        System.out.println(s1.say() + "这是s1");

        //依据类模板创建的一个全新的对象,和上边不是一回事
        //Student s1 = new Student();
        //System.out.println(s1.say());

    }
}

3.封装
使用private将属性进行封装,提高安全性。这样只有本类中的方法可以调用,其他类不能访问。
在类中声明set/get方法为外界提供一个公共方法。并且可以利用get/set方法做一些合理性的检查。

变量访问原则:就近原则
this——->对象
代表

将上边的例子中的属性进行封装:
set/get方法默认规范,建议写成如下述代码所示.
**公共方法调用:
引用名.方法名(); 若有参数,括号中写成参数 (实参和形参赋值要求兼容就可以,不一定要类型完全一样)**

public class Student1 {
    //特征,用成员变量来描述//利用private将name num 封装起来
    private String name;        //对象属性(实例变量)
    private int num;            //对象属性(实例变量)
    private String profession;  //对象属性(实例变量)
    //name的set/get方法
    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    //num的set/get方法
    public void setNum(int num) {
        this.num = num;
    }
    public int getNum() {
        return num;
    }
    //profession的set/get方法
    public void setProfession(String profession) {
        this.profession = profession;
    }
    public String getProfession() {
        return profession;
    }

    //行为,用成员方法来描述
    //吃饭
    public void eat() {
        System.out.println("吃饭!");
    }
    //学习
    public void study() {
        System.out.println("学习!");
    }
    //say()作自我介绍
    public String say() {
        return "姓名:" + name + "\t学号:" + num + "\t专业:" + profession;
    }
}
public class StudentTest1 {

    public static void main(String[] args) {
        Student1 ss1 = new Student1();
        ss1.setName("沈yl");
        ss1.setNum(102);
        ss1.setProfession("计算机");

        System.out.println(ss1.getName());
        System.out.println(ss1.getNum());
        System.out.println(ss1.getProfession());

        System.out.println(ss1.say());

        System.out.println("-------------------------------------------------");

        Student1 ss2 = new Student1();
        ss2.setName("温z");
        ss2.setNum(103);
        ss2.setProfession("化学");

        System.out.println(ss2.getName());
        System.out.println(ss2.getNum());
        System.out.println(ss2.getProfession());

        System.out.println(ss2.say());
    }
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值