鱼C论坛

 找回密码
 立即注册
查看: 3737|回复: 1

[学习笔记] [Java从入门到入坟] 面向对象基础 1-1

[复制链接]
发表于 2017-7-12 13:20:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 ~_~ 于 2017-7-12 14:01 编辑

面向对象基础

1. 成员变量和局部变量的区别
  • 类中位置不同
            成员变量:在类中方法外
            局部变量:类中方法内
  • 内存中的位置不同     
            成员变量:在堆中
            局部变量:在栈中
  • 生命周期不同  
            成员变量:随着对象的创建而存在,随着对象的消失而消失
            局部变量:随着方法的调用而存在,随着方法调用完毕而消失
  • 初始化值不同     
            成员变量:构造方法给予初始化值 int --0 , boolean -- false , double -- 0.0 , 引用类型 -- null
            局部变量:没有初始化值
2. 类作为形式参数的问题
  • 当看到一个方法需要的是一个类名时,这说明需要的是一个对象(子类的或自己的)
3. 匿名对象
  • 没有名字的对象
  • 应用场景     
            A:调用方法,仅仅调用一次的时候
            B:可以作为实际参数传递
4. 封装
  • 隐藏实现细节,提供公共的访问方式   
  • 好处:    
            A:隐藏实现细节,提供公共的访问方法
            B:提高的复用性
            C:提高代码的安全性
  • 设计原则     
            将不想让外界知道的实现细节给隐藏起来,提供公共的访问方式
  • private是封装的一种体现     
            封装:类,方法,private修饰成员变量
5. private关键字
  • 私有的意义,可以修饰成员变量和成员方法
  • 特点:     
            被private修饰后的成员只能在本类中被访问
  • private的应用:     
            写一个类的时候:
    1.把所有的成员变量用private修饰
    2.提供对应的getXxx()/setXxx()
6. this关键字
  • 代表当前类的引用对象     
             记住:哪个对象调用方法,该方法内部的this就代表那个对象
  • this的应用场景     
            A:解决了局部变量隐藏成员变量的问题
            B:其实this还有其他的应用
7. 构造方法
  • 作用:用于对对象的数据进行初始化   
  • 格式:     
            A:方法名和类名相同
            B:没有返回值类型,连void都不能有
            C:没有返回值
               
                    思考题:构造方法中可不可以有return语句呢?
                    可以。而是写成这个样子就OK了:return;
                    其实,在任何的void类型的方法的最后都可以写上:return;
  • 构造方法的注意事项     
            A:如果没写构造方法,系统将提供一个默认的无参构造方法
            B:如果给出了构造方法,系统将不再提供默认构造方法
              如果这个时候,要使用无参构造方法,就必须自己给出。
            推荐:永远手动自己给出无参构造方法。
  • 给成员变量赋值的方式     
            A:setXxx()
            B:带参构造方法
  • 标准案例     
    class Student {
           private String name;
           private int age;
    
           public Student(){}
    
           public Student(String name,int age) {
               this.name = name;
               this.age = age;
           }
    
           public String getName() {
               return name;
           }
    
           public void setName(String name) {
               this.name = name;
           }
    
           public int getAge() {
               return age;
           }
    
           public void setAge(int age) {
               this.age = age;
           }
       }
    
       //测试:
       class StudentDemo {
           public static void main(String[] args) {
               //方式1
               Student s1 = new Student();
               s1.setName("鱼油");
               s1.setAge(27);
               System.out.println(s1.getName()+"---"+s1.getAge());
    
               //方式2
               Student s2 = new Student("小甲鱼",30);
               System.out.println(s2.getName()+"---"+s2.getAge());
           }
       }
8.建立对象都作了什么
        (1)把Student.class文件加载到内存
        (2)在栈内存为s开辟空间
        (3)在堆内存为学生对象申请空间
        (4)给学生的成员变量进行默认初始化。null,0
        (5)给学生的成员变量进行显示初始化。
        (6)通过构造方法给成员变量进行初始化。
        (7)对象构造完毕,把地址赋值给s变量               
9. static关键字
  • 静态的意思   (可以修饰成员变量和成员方法。)
  • 静态的特点:     
                    A:随着类的加载而加载
                    B:优先于对象存在
                    C:被类的所有对象共享
                            这其实也是判断该不该使用静态的依据。
                            举例:饮水机和水杯的问题思考
                    D:可以通过类名调用
                            既可以通过对象名调用,也可以通过类名调用,建议通过类名调用。
  • 静态的内存图     
                    静态的内容在方法区的静态区
  • 静态的注意事项:    
                    A:在静态方法中没有this对象
                    B:静态只能访问静态(代码测试过)
  • 静态变量和成员变量的区别     
                    A:所属不同
                            静态变量:属于类,类变量
                            成员变量:属于对象,对象变量,实例变量
                    B:内存位置不同
                            静态变量:方法区的静态区
                            成员变量:堆内存
                    C:生命周期不同
                            静态变量:静态变量是随着类的加载而加载,随着类的消失而消失
                            成员变量:成员变量是随着对象的创建而存在,随着对象的消失而消失
                    D:调用不同
                            静态变量:可以通过对象名调用,也可以通过类名调用
                            成员变量:只能通过对象名调用
  • main方法是静态的     
                    public:权限最大
                    static:不用创建对象调用
                    void:返回值给jvm没有意义
                    main:就是一个常见的名称。
                    String[] args:可以接收数据,提高程序的灵活性
                            格式:java MainDemo hello world java
                                      java MainDemo 10 20 30

PS:这个是上个星期用Markdown写的,感觉从面向对象这开始发好一点,目前才快学完集合=-=
    (表示将Markdown变成论坛的格式好痛苦啊...)                                                                                                                                      
                                                                                                                                                         

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
小甲鱼 + 5 + 5 支持楼主!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-12 14:30:16 | 显示全部楼层
论坛有论坛的编辑风格……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-14 13:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表