java笔记(六)

 

 

六、面向对象概述

1.面向对象概述并举例说明

  • 面向过程 强调过程,执行者,强调的是功能行为
  • 面向对象 强调对象,指挥者,将功能封装进对象,强调具备了功能的对象。
  • 面向对象举例
    • 煎饼果子
  • 面向对象思想的特点
    • A:它是一种更符合人们思考习惯的思想
    • B:它使复杂的内容简单化
    • C:它使我们从执行者变成了指挥者+
  • 面向对象的特点
    • A:封装
    • B:继承
    • C:多态
  • 开发的过程:其实就是不断的创建对象,使用对象,指挥对象做事情

 

2.对象的关系

 

  • 使用计算机语言就是不断的在描述现实生活中的事物。
  • java中描述事物通过类的形式体现,类是一组相同属性行为的对象的抽象。
  • 对象即是该类事物实实在在存在的个体。
  • 举例:
  • 人就是一个类(是把每一个相同属性行为的对象进行抽取)
  • 人的属性:姓名,年龄,身高,体重等
  • 人的行为:吃饭,睡觉,说话,,跳等
  • 而我们就是对象(实实在在存在的个体),具体每个人叫什么名字,年龄多大,身高多高,体重多重等,吃饭怎么吃,睡觉怎么睡,说话怎么说等
  • 描述任意一类事物就是在描述他的属性和行为
  •  
  • 分析这句话的属性和行为:
  • 上得了厅堂,下得了房,写得了代码,查得出常,杀得了木马,翻得了围墙(黑客技术),开得起好车,买得起新房,斗得过二奶,打得过流氓。、
  •  
  • 如何创建对象
  • (1) 对现实世界中事物的描述(成员变量和方法)
  • (2)对象 现实世界中实际存在具体的个体
  • (3)对象的使用以及内存图 new
	class Person {
	    String name;
	    int age;
	    public void speak() {
	        System.out.println("我的姓名是:" + name + ",我的年龄是:" + age);
	    }
	}

3.对象的内存图

  • 看图说话

4.成员变量和局部变量

  • (1)作用范围
    • 局部变量:方法内public void method(String name) {}
    • 成员变量:类中,对整个类有效{成员变量分为两种一种静态的,一种非静态的}
  • (2)存储空间
    • 局部变量:栈内存
    • 成员变量:堆内存{静态的成员变量在方法区,非静态的在对象中在堆内存中}
  • (3)初始化值
    • 局部变量:在使用前必须手动给值
    • 成员变量:jvm默认初始化值。int 0 byte 0 short 0 long 0 double 0.0 boolean false char '\u0000'
•	class Person {
•	    int num = 10; //成员变量
•	    public void method(){ //成员方法
•	        int num = 20 ;  //局部变量
•	        System.out.println(num);
•	    }
•	}

5.匿名对象

  • (1)当对对象中的功能只执行一次的时候使用。否则,请你使用有名字的对象。
•	Person p = new Person();
•	p.show();
•	p.show();
•	new Person().show();
•	new Person().show();

(2)用于作为实际参数进行传递。

•	Person p = new Person();
•	method(p);
•	method(new Person());
•	public static void method(Person p){}
  • (3)是否可以用匿名对象调用属性,是否有意义?

 

6.封装

  • (1)封装的好处:便于重复使用,安全性高。
  • (2)private权限修饰符
•	class Demo{
•	    private int age;//把属性私有对外提供公共的访问方法,可控性提高了
•	
•	    public void setAge(int age){
•	        if(age>0 && age<=200){
•	            this.age = age;
•	        }else { 
•	            System.out.println("请回火星");
•	        }
•	    }
•	
•	    public int getAge(){
•	        return age;
•	    }
•	    /*
•	    设置是setXxx要传参数
•	    获取是getXxx要返回值类型,返回值类型和属性一致
•	    */
•	}
•	class DemoTest{
•	    public static void main(String[] args) {
                Demo d = new Demo();
•	              d.setAge(-20);
•	        System.out.println(d.getAge());
•	    }
•	}

7.this关键字及其使用场景

  • (1)代表当前对象的引用。使用的时候,谁调用方法,this就代表谁
  • (2)什么时候使用this呢?
    • A:当局部变量和成员变量重名的时候,可以用this进行区分。
    • Bthis调用成员方法
    • C:构造函数中使用this
      • this() 必须放在第一行。
•	同下面的道理:
•	class Person{
•	String name;
•	Person(String name){
•	    this.name = name;
•	    System.out.println("有一个参数的构造函数");
•	}
•	
•	Person(String name,int age){
•	
•	    this("张三");
•	    this.name = name;
•	    this.age = age;
•	    System.out.println("有两个参数的构造函数");
•	}
•	Void print(){
•	   Sysout(this.name);
•	}
•	}
•	Person p = new Person("lisi",20);
•	p.print();
•	Person p2 = new Person("wangwu");
•	p2.print()

 

你可能感兴趣的:(java)