黑马程序员技术交流社区

标题: 小笔记 [打印本页]

作者: 徐朋威0716    时间: 2015-7-25 23:28
标题: 小笔记
1:请解释面向对象是什么?并举例说明?
答:        1、面向过程是以函数为基础,完成各种操作;
        2、面向对象是以对象为基础。强调的是对象、结果;
        3、以上两者都是一种思想。
        面向对象是一种更加符合人们思考习惯;他可以将复杂问题简单化;将程序员从执行者变为指挥者。

2:类与对象的关系?
答:类就是成员变量和成员方法的一中集合,是一个抽象的概念。对象就是类的具体存在和体现。

3:类有哪些内容组成?
答:成员变量 -- 事物的属性;成员方法 -- 事物的行为,一些功能;构造函数 -- 对数据的初始化

4:局部变量和成员变量的区别?
答:        A:定义位置不同 -- 成员变量在类中;局部变量在方法中,或者方法的形式参数
        B:初始化值的区别:成员变量:有默认初始化值;局部变量没有初始化值,想使用必须先赋值;
        C:存储位置不同:成员变量在堆中,随着对象的存在而存在,对象消失他也消失;局部变量存储在栈中,随着方法的调用而存在,随着方法的调用完毕而消失。

5:构造方法的特点及注意事项?
答:        1、如果没有给出构造函数,那么系统就默认给一个无参构造器
        2、假如你给了构造函数,系统就不再提供构造函数
        3、构造方法重载就是构造方法接收不同的参数

6:this关键字是什么?在什么时候使用?
答:this关键字就是:哪个对象调用方法,那么这个方法中就隐藏了一个this代表这个对象。
通过this可以调用成员方法和成员变量;用于解决局部变量隐藏成员变量值的问题。

7:给成员变量赋值的方式有几种?分别怎么实现?
答:A:给静态的成员变量赋值
        (1)可以通过类中的方法给成员变量赋值(私有成员变量的也可以) public void setXXX(){...}
        (2)可以通过构造方法给成员变量赋值(私有成员变量的也可以)public XXX(){...}
        (3)可以通过代码块完成成员变量的初始化值(私有成员变量的也可以){xxx = ...;}
        (4)可以通过类名.成员变量赋值 XXX.name = ...;
   B:给非静态的成员变量赋值
        (1)可以通过类的方法赋值 public void setXXX(){...}
        (2)可以通过对象调用 xxx.name = ...;
        (3)可以通过代码块完成成员变量的初始化值{xxx = ...;}       

8:static关键字是什么?有什么特点?在什么时候使用?
答:他可以修饰成员变量和成员方法。被他修饰的内容,随着类的加载而加载,优先于对象存在,可以被类名直接调用,如果类中的某个内容被该类的所有对象所共有,那么,该内容就该被static修饰,没有被static修饰的其实就是属于对象的特有属性,特殊描述。

编程题目:
1:请写出一个标准的学生类(Student)
/**
*学生类:用于定义学生对象
*/
class Student
{
        // 姓名
        private String name;
        // 年龄
        private int age;
        // 学号
        private String num;
       
        /**无参构造函数*/
        public static Student(){}
        /**有参构造函数*/
        public static Student(String name, int age; String num)
        {
                this.name = name;
                this.age = age;
                this.num = num;
        }
       
        /**setName方法,给name赋值*/
        public void setName(String name)
        {
                this.name = name;
        }
       
        /**getName方法,获取name值*/
        public String getName()
        {
                return this.name;
        }
       
        /**setAge方法*/
        public void setAge(int age)
        {
                this.age = age;
        }
       
        /**getAge*/
        public int getAge()
        {
                return this.age;
        }
       
        /**setNum 设置学号*/
        public void setNum(String num)
        {
                this.num = num;
        }
        /**getNum 获取学号*/
        public String getNum()
        {
                return this.num;
        }
        /**show 方法,输出对象的属性值*/
        public void show()
        {
                System.out.println("姓名是" + this.name + "年龄为:" + this.age+"的学生,学号为:" + this.num);
        }

}
                               
2:在测试类StudentTest中测试第一题的内容。
/**学生测试类*/
class StudentTest()
{
        public static void main(String[] args)
        {
                Student student1 = new Student();
                Student student2 = new Student("你是谁", 23, "12578");
               
                student1.setName("徐朋威");
                //...其他方法
                student1.show();
               
                student2.setName("我是..");
                student2.show();
               
        }
}

3:编写代码测试下面这句话:
        静态方法只能访问静态成员(成员变量和成员方法)。
class TestDemo
{
        static name;

        public void show()
        {
                System.out.println(name);
        }
        public static String show(String name)
        {
                return name;
        }
       
        public static void mian(String[] agrs)
        {
                System.out.println(name);
                show();
                show("你是");
        }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2