现在的位置: 首页 > 综合 > 正文

java基础_Day05

2017年11月05日 ⁄ 综合 ⁄ 共 4174字 ⁄ 字号 评论关闭

1,面向对象概述:

面向对象是现对于面向过程而言的;
面向对象与面向过程都是一种思想;
面向过程强调功能行为,面向独享是将功能封装进对象,强调的是具有功能的对象;


2,面向对象的特点:

面向对象是一种符合人们思考习惯的思想;
面向对象使复杂的事情变得简单;
面向对象将程序员从执行者转变为指挥者;
完成需求时:
先找具有所需功能的对象来使用,如果不存在,创建一个具有该功能的对象,这样可以简化开发提高复用。


3,面向对象的开发、设计、特征:

开发:不断地创建对象,使用对象,指挥对象做事的过程;
设计:管理和维护对象之间的关系。
特征:封装、继承、多态。


4,类与对象、属性与行为、成员变量与成员函数:

//使用计算机语言就是不断地在描述现实生活中的事物;
类:Java中描述事物是通过类来体现的的,类是具体事物的抽象,是概念上的定义;生活中描述事物就是描述事物的属性和行为;
对象:该类事物在现实生活中实实在在存在的个体。
属性:java中对应类中的成员变量;
行为:java中对应类中的成员函数。


5,成员变量与局部变量的区别:

(1)成员变量定义在类中,整个类中都可以访问,它有默认初始化值,存放在堆内存中。
(2)局部变量定义在局部范围内(函数,语句等),只有范围内可以访问,他是没有默认初值化值,存放在栈内存中。


6,Eg:创建对象、使用对象:

class Car
{
     int num = 4;
     String color = "red";
     void run()
     {
          System.out.println(color+"……"+num);
     }
}
class CarDemo
{
     public static void main(String[] args)
     {
          //生产汽车。在java中通过操作new操作符来完成。
          //其实就是在堆内存中产生一个实体。
          Car c = new Car();//c就是一个类类型变量。记住:类类型变量指向对象。
          //需求:将已有车的颜色改成蓝色,只会该对象。在java中的方式是:对象.对象成员
          c.color = "blue";
          c.run();
          Car c1 = new Car();
          c1.run();//red 4
     }
}
Car c = new Car();
c.num = 5;
Car c1 = c;
c1.colour = “green”;
c.rum();//c.colour = ”green”;c.num = 5;


7,匿名对象:

概念:匿名对象是对象的简化形式;
两种使用情况:当对对象的方法仅调用一次的时候;当匿名可以对象作为实际参数进行传递的时候。
new Car().run();仅调用方法有意义,调用属性没有意义;如果对一个对象进行多个成员调用,必须给对象起个名字。


8,封装(Encapsulation)

概念:是指隐藏对象的属性和实现细节,仅对外提供公共的访问方式。
好处:将变化隔离
便于使用
提高复用性
提高安全性
原则:将不需要对外提供的内容都隐藏起来。
       把属性都隐藏,提供公共方法对其访问。


9,封装private

privte//私有,权限修饰符,用于修饰成员;仅在本类中有效。
私有仅仅是封装的一种体现形式;
class personDemo
{
     private int age;
     public void setAge(int a)
     {
          if(a>0 && a<130)
               age = a;
          else
               System.out.println("Age不符合范围");
     }
     public int getAge()
     {
          return age;
     }
     void speak()
     {
          System.out.println("age="+age);
     }
}
class person
{
     public static void main(String[] args)
     {
          personDemo p = new personDemo();
          p.setAge(-20);
          p.speak();
     }
}

10.构造函数:

    (1)特点:
          方法名与类名相同
          没有返回类型
          没有返回值
     (2)作用:构造函数是用于创建对象,并对其进行初始化赋值,对象一建立就自动调用相对应的构造函数,
     (3)构造方法的注意事项:
          A:如果一个自定义类没有构造方法,系统会默认给出一个无参构造方法。
          B:如果一个自定义类提供了构造方法,那么,系统将不再给出无参构造方法。
            这个时候,你可以不使用无参构造方法。
            如果你想使用,那么,就必须手动给出无参构造方法。

          建议:一般情况下,我们的自定义类都要手动给出无参构造方法。
     (4)构造方法和成员方法的区别
          A:格式区别
               构造方法和类名相同,并且没有返回类型,也没有返回值。
               普通成员方法可以任意起名,必须有返回类型,可以没有返回值。
          B:作用区别
               构造方法用于创建对象,并进行初始化值。
               普通成员方法是用于完成特定功能的。
          C:调用区别
               构造方法是在创建对象时被调用的,一个对象建立,只调用一次相应构造函数
               普通成员方法是由创建好的对象调用,可以调用多次

11.构造代码块:

/*
this:看上去,是用于区分局部变量和成员变量同名情况。
this为什么可以解决这个问题?
this到底代表的是什么呢?
this:就代表本类的对象,到底代表哪一个呢?
     this代表它所在函数所属对象的引用。
     简单说:哪个对象在调用this所在的函数,this就代表哪个对象。

this的应用:当定义类中功能时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象。
          但凡本类功能内部使用了了本类对象,都用this表示。
*/
class Person
{
     private String name;
     private int age;
     Person(int age)
     {
          this.age = age;
     }
     Person(String name)
     {
          this.name = name;
     }
     Person(String name,int age)
     {
          this.name = name;
          this.age = age;
     }
     public void speak()
     {
          System.out.println("name="+this.name+"...age="+this.age);
          this.show();
     }
     public void show()
     {
          System.out.println(this.name);
     }
     /*
     需求:给人定义一个用于比较年龄是否相同的功能。也就是是否是同龄人。
     */
     public boolean compare(Person p)
     {
          return this.age==p.age;
     }
}
class PersonDemo3
{
     public static void main(String[] args)
     {
          Person p1 = new Person(20);
          Person p2 = new Person(25);
          boolean b = p1.compare(p2);
          System.out.println(b);

          //Person p = new Person("lisi");
          //Person p1 = new Person("zhangsan");
          //p.speak();
          //p1.speak();
          //p.speak();
     }
}


12,This关键字在构造函数间调用:

/*
this语句 :用于构造函数之间进行互相调用。
this语句只能定义在构造函数的第一行。因为初始化要先执行。
*/
class Person
{
     private String name;
     private int age;
    
     {
         
          System.out.println("code run");
     }
    
     Person()
     {
          //this("hah");
          System.out.println("person run");
     }
     Person(String name)
     {
          //this();
          this.name =name;
     }
     Person(String name,int age)
     {
          //this(name);
          //this.name = name;
          this.age = age;
         
     }
}
class  PersonDemo4
{
     public static void main(String[] args)
     {
          new Person();
          //Person p = new Person("lisi",30);
          //Person p1 = new Person("lisi2",36);
     }
}

【上篇】
【下篇】

抱歉!评论已关闭.