面向对象1

1. 一切皆对象。

   对象:属性和行为的组成。

   类 :具有相同属性和行为的的一组对象的集合(抽象的)。

   属性:成员变量。  行为:方法。

   创建对象:new + 构造方法

   构造方法:(1)名字和类名一摸一样 (2)没返回值类型,连void都没有

                (3)每一个类都有一个空的隐式的构造方法

                (4)若手动地去写一个显式的构造方法,那么隐式的构造方法不存在

                (5)构造方法的作用就是来创建对象的,不能调用,还可以初始化成员变量

2. 栈:保存小数据,速度快。(局部变量保存在栈里)

    堆:保存大数据,速度慢。(成员变量保存在堆里)

    一个对象未被引用就相当于找不到这块内存,也就是垃圾,所以把一个对象销毁的

    最简单的方法就是把它的引用设为null值。

3. 写出一个类的方法步骤:

   (1)找出哪些对象  (2)找出类中的属性和方法

   (3)确定有几个类  (4)最后创建对象,调用方法完成实际功能。

    this 指针:解决成员变量和局部变量同名的问题,static 变量不能重复设置。

4. 若成员变量和局部变量同名,则加上this的为成员变量,如:this.name 和 this.age都是指

    成员变量的name和age,即this 指针相当于对当前对象的引用。

5. 成员变量的初始化问题:如果成员变量未被初始化则会被默认初始化,而局部变量则不能。

6. 加了static 的变量叫静态变量,加了static 的方法叫静态方法。栈内static 里所有的变量都是共享的,

    所有的对象都共享它,故static 里的变量的数据不能重复。

7. 相关的程序体现的知识点如下: 

    public class Ma {
    public static void main( String args[]){
   
        Person p1 = new Person("张三",19);   //构造方法初始化成员变量         
        Person p2 = new Person("李四",20);   //构造方法初始化成员变量    
        Person.m();    //因为方法m()是静态的,所以可以不用对象直接调用
       }
     }

  class Person {
 
    public Person(String name,int age){
       this.name = name ;
       this.age = age ;   //this指针指向类Person的成员变量
    }
    String name;
    int age;
    public static void m(){
       System.out.println("我是中国人");
     }
   }

//张三吃了李四的一根头发

  public class Mda {
 
     public static void main( String args[]){
   
        Person p1 = new Person();
        p1.name = "张三";
        Person p2 = new Person();
        p2.name = "李四";
        Hair h = new Hair("的头发"); 
    
        p2.eat(p1,h);  
            
       }
  }
   class Person {
 
      String name ;
      Hair h  ;
      public void eat(Person p , Hair h){
        System.out.println(name + "吃了" + p.name + h.info); 
      }
  
   
  }

  class Hair {
     String info ;
     public Hair(String inf) {
     info = inf ;
     }
          
  }

//tom猫抓住了老鼠jacky ,jacky哭了

  public class Mb {
     public static void main(String args[]){
       Cat cat = new Cat();
       cat.name = "tom";
       Mouse m = new Mouse();
       m.name = "jacky"; 
       cat.catchmouse(m);
    
     }
  }

  class Cat {
     String name;
     public void catchmouse(Mouse m) {
        System.out.print(name + "猫抓住了老鼠" + m.name + ",");
        m.cry();  
     } 
  }

  class Mouse {
     String name;
     public void cry(){
       System.out.println(name + "哭了"); 
     } 
  }

posted on 2012-07-04 17:10  weij  阅读(111)  评论(0编辑  收藏  举报