数据加载中……
java笔记3

对象的特征:状态(state)和行为(behabior)
人          身高,体重     吃饭,睡觉


现实世界对象的状态保存在软件对象的变量中,先是世界对象的行为通过软件对象的方法(函数)来实现、。

类和对象
把相似的对象归成一个类。
类就是模版定义了通用与一个特定种类的所有对象的状态(变量)和行为(方法)
类是创建对象的模版,对象是类的实例。
掌握面向对象的难点在于思路的转换,我们通常考虑解决问题的方法。而不是考虑将问题抽象成对象再去解决它。
编写一个驾驶汽车的方法
面向过程的程序设计: 编写一个方法,void drivercar();
面向对象的程序设计: 将一辆汽车看成一个对象,将所有汽车对象的共性抽取出来,设计一个类Car,
  类中有一个方法void drive(),用Car这个类实例化一个具体的对象car,调用:car.drive().
 
 
 new关键字的作用。
  为对象分配内存空间,引起对象构造方法的调用。为对象返回一个引用。 
 
 
  构造方法的名字和类名相同,并且没有返回值。
  构造方法主要用于为类的对象定义初始化状态。
  我们不能直接调用构造方法,必须通过new关键字来自动调用,从而创建类的实例。
  java的类都要求有构造方法,如果没有定义构造方法,java编译器会为我们提供一个缺省的构造方法,也就是不带参数的构造方法。
  缺省构造方法默认值:数值         0
                      booeean    false
                      char       ”\0"
                      对象       null
                     
方法的重载:重载构成的条件:方法的名称相同,但是参数类型或参数个数不同,才能构成方法的重载。


特殊变量this
     this变量代表对象本身。
     当类中有两个同名变量,一个属于类(类的成员变量),而另一个属于某个特定的方法(方法的局部变量),
  使用this区分成员变量和局部变量
     使用this简化构造函数的调用。可以通过不带参数的构造方法调用带参数的构造方法。
     Point(int a,int b)
 {
  x=a;
  y=b;
 }
 Point()
 {
  this(1,2);
 }
 一个类所有的实力(对象)调用的成员方法在内存中只有一份拷贝,尽管在内存中可能有多个对象,
而数据成员在类的每个对象所在内存中都存在这一份拷贝。this变量允许相同的实例方法为不同的对象工作。
每当调用一个实例方法时,this变量将被设置成引用改实例方法的特定的类对象。方法的代码接着会与this所代表的特定数据建立关联。
    
    内存模型 的概念
 
     静态方法和静态变量时属于某一个类,而不属于类的对象。
     静态方法和静态变量的引用直接通过类名引用。
     在静态方法中不能调用非静态的方法和引用非静态的成员变量。反之,则可以。
     可以用类的对象obj去调用静态的方法method(),如 obj。method()。
    
 
  final定义的变量要在定义时初始化也可以放在构造函数中实现
  常量通常定义为静态的,是为了节省内存。这时就要在定义时初始化。
  final定义的常量一般默认用大写。

继承
 
   继承是面向对象的关键
   在java中,通过关键字extends继承一个已有的类,被继承的称为父类(超类,基类),新的类称为子类(派生类)。
   在java中,不允许多继承。
  
方法的覆盖
在子类中定义一个与父类同名、返回类型、参数类型均相同的一个方法,称为方法的覆盖。覆盖发生在子类与父类之间。
   class Animal
{
 int height,weight;
 void eat()
 {
  System.out.println("animal eat");
 }
 void breathe()
 {
  System.out.println("animal breathe");
 }
 void sleep()
 {
  System.out.println("animal sleep");
 }
 
}
class Fish extends Animal
{
 void breathe()
 {
  System.out.println("fish bubble");
 }
}
class Integration
{
 public static void main(String[] args)
 {
  Animal an=new Animal();
  Fish fh= new Fish();
  
  an.breathe();
  fh.height=30;
  fh.breathe();
  
 }
}
   特殊变量super,提供了对父类的访问。
   可以使用super访问父类被子类隐藏的变量或覆盖的方法。
   每个子类构造方法的第一条语句,都是隐含的调用super(),如果父类没有这种形势的构造函数,那么在编译的时候就会报错。
  
   class Animal
{
 int height,weight;
 void eat()
 {
  System.out.println("animal eat");
 }
 void breathe()
 {
  System.out.println("animal breathe");
 }
 void sleep()
 {
  System.out.println("animal sleep");
 }
 
}
class Fish extends Animal
{
 void breathe()
 {
  super.breathe();
  super.height=40;
  System.out.println("fish bubble");
 }
}
class Integration
{
 public static void main(String[] args)
 {
  //Animal an=new Animal();
  Fish fh= new Fish();
  
  //an.breathe();
  fh.height=30;
  fh.breathe();
  
 }
}
  
   多态性,子类有就调用子类的。没有就调用父类的
   instanceof
   比较一个实例是否是一个类的实例

posted on 2007-08-26 18:48 rick 阅读(191) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: