javaSE学习的week01

1.面向对象思想

        面向对象是基于面向过程的编程思想.

        面向过程是面向对象的基础.

        面向过程: 其实就是面向着具体的每一个步骤和过程.(程序员是实施者)

        面向对象: 强调的是对象,然后由对象调用功能. (程序员是指挥者)

        举例: 买电脑

        面向过程:了解电脑—了解自己的需求—找到对应的参数信息-到电脑城-讨价还价—买了电脑,帮回寝室

        面向对象:我想买台电脑—叫班长帮我去买回来—班长给我送到寝室,我就可以用了.

        

         举例:吃饭:

        面向过程: 买菜—洗菜—切菜-炒菜-煮饭-吃饭-洗碗

        面向对象: 我想吃饭 –美团外面 – 送过来,喂你吃.

2.面向对象的开发,设计和特征

        面向对象开发:就是不断的创建对象,使用对象,指挥对象做事情.

        面向对象的设计:其实就是管理和维护对象之间的关系.        

        面向对象的特征:封装、继承、多态

3. 类与对象

/*

 * 类的定义

 * 现实世界是由事物组成的.那么,我们怎么表示一个事物?

 * 事物由两部分组成

 * 属性:事物的描述信息

 * 行为:该事物能干什么

 *

 * java中,我们用类来表示事物.

 * 类也由2部分组成(就现在而言):

 * 成员变量:对应事物的属性

 * 成员方法:对应的是事物的行为

 *

 * 类是一组相关属性和行为的集合.

 *

 * 举例:

 *

 * 学生

 * 属性:姓名,年龄,...

 * 行为:学习,睡觉

 *

 * 学生类

 * 成员变量:name,age

 * 成员方法:study(),sleep()

 *

 * 那么,我们如何定义一个类?

 * 格式:

 * class 类名 {

 * 成员变量

 * 成员方法

 * }

 *

 * 如何定义成员方法:跟以前定义方法类似,只是去掉static关键字

 */

class Student {

// 成员变量

        String name;

        int age;

// 成员方法

public void study() {

        System.out.println("good good study, day day up!");

}

public void sleep() {

        System.out.println("学生上课不能睡觉");

}

}

/*

 * 学生类写玩了,我如何测试自己写得对不对?如何调用学生类中的成员变量和成员方法?

 *

 * 如何创建对象? 格式:类名 对象名 = new 类名(); 如何调用成员变量? 格式:对象名.成员变量名; 如何调用成员方法?

 * 格式:对象名.成员方法名();

 *

 * 注意:

 * (1) 现在的java文件中有多个类,这是为了上课的方便,以后一个java文件中只能有一个类.

 * (2) Student类前面不能有public修饰符.一个java文件中,只能有一个公共的类

 * (3) 测试类的名字必须和java文件的名字相同.

 *

 */

//测试类

public class Demo {

        public static void main(String[] args) {

// 创建对象

                Student s = new Student();

// 调用对象s的成员变量

                s.name = "班长";

                s.age = 19;

                System.out.println(s.name + "---" + s.age);

// 调用对象s 的成员方法

                s.study();

                s.sleep();

        }

}

/*

 * 定义一个手机类

 *

 * 分析:

 * 手机(事物)

 * 属性:品牌,价格,颜色

 * 行为:打电话,玩游戏

 *

 * 手机类(Phone)

 * 成员变量:brand,price,color

 * 成员方法:call(),playGame()

 */

class Phone {

// 成员变量

        String brand;

        double price;

        String color;

// 成员方法

        public void call() {

                System.out.println("手机都能打电话");

        }

        public void playGame() {

                System.out.println("新工科班的学生不能用手机玩游戏");

        }

}

// 测试类

public class Demo2 {

        public static void main(String[] args) {

// 创建Phone对象

                Phone p = new Phone();

//调用成员变量

                p.brand = "华为";

                p.price = 3999;

                p.color = "土豪金";

                System.out.println(p.brand + "--- " + p.price + "---" + p.color);

//调用成员方法

                p.call();

                p.playGame();

        }

}

4.对象的内存图

5.成员变量和局部变量的区别

        (1) 在代码中的位置不同.

        成员变量在类中方法外

        局部变量在方法体内或方法参数的位置

        (2) 在内存中的位置不同

        成员变量:存放在堆区

        局部变量:存放在栈区

        (3) 生命周期不同

        成员变量:随着对象的存在而存在,随着对象的消失而消失

        局部变量:随着方法的调用而存在,调用结束消失

(4) 默认值不同

/*

 * 成员变量和局部变量的默认值

 */

class Student01 {

// 成员变量

        String name;

        int age;

// 成员方法

        public void study() {

                System.out.println("good good study, day day up!");

        }

        public void sleep() {

                System.out.println("学生上课不能睡觉");

        }

        public void fun(){

                int a;//a是局部变量

                //System.out.println(a);//局部变量没有默认值

        }

}

public class Demo3 {

        public static void main(String[] args) {

                Student01 student = new Student01();

                //成员变量有默认值

                //String类型的成员变量默认值是null

                //int类型的成员变量默认值是0

                //其他数据类型的默认值是什么?自己编程看看

                System.out.println(student.name+"---" + student.age);

        }

}

/*

 * 成员变量和局部变量的访问问题

 */

class Thecher {

        String name;

        String age;

        public void fun1(){

                System.out.println(name);

        }

        public void fun2(){

                name = "刘老师";

                System.out.println(name);

        }

        public void fun3(String name){

                name = "刘老师";

                System.out.println(name);

        }

        public void fun4(String name){

                name = "刘老师";

                System.out.println(name);

        }

}

public class Demo4 {

        public static void main(String[] args) {

                Thecher t = new Thecher();

                //t.fun1();

                //t.fun2();

                /*t.name="廖老师";

                String name = "陈老师";

                System.out.println(name);*/

                //t.fun3("刘德峰老师");

                t.name="廖老师";

                System.out.println(t.name);

        }

}

6. 匿名对象

        匿名对象就是没有名字的对象.

        应用场景:

        (1) 仅仅只调用一次方法,以后再也不用了.

        思考 匿名对象有什么好处?

        匿名对象调用方法结束后,就会马上变成垃圾,被垃圾回收器回收.

        (2) 当作方法的实参传递.

class Student {

// 成员变量

        String name;

        int age;

// 成员方法

        public void study() {

                System.out.println("good good study, day day up!");

        }

        public void sleep() {

                System.out.println("学生上课不能睡觉");

        }

}

public class Demo {

        public static void main(String[] args) {

                //以前的做法

                Student s = new Student();

                //s.study();

                //匿名对象的使用

                //new Student().study();

                //创建一个学生对象作为方法的参数

                //fun(s);

                //用匿名对象作为方法的参数

                fun(new Student());

}

      public static void fun(Student s){

                s.sleep();

        }

}

作业:

        1. 自己编写学生类和手机类.

        2.  自己编写一个Person类.并测试.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值