<<  < 2013 - >  >>
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31




面向对象小结

面向对象三大特征:封装,继承和多态

1.类和对象
对象:客观存在的实体(万事万物皆对象)
类:具有相同特征和共同行为对象的集合。类是对象的模板
类的组成部分:属性(特征)和方法(功能或行为)
[修饰符] class 类名{
   [修饰符] 数据类型  属性名; //属性
   ....
  
    [修饰符] 返回值类型  方法名(参数列表...){
       //方法体
    }
}
class Student{
   String name;
   public void detail(){
    ....
   }
}

创建对象: 类名 对象名 = new 类名();//调用无参构造方法
Student stu = new Student();
访问实例方法:对象名.方法名(..); stu.detail();
访问成员变量:对象名.属性;  stu.name="张三";
方法的值传递和引用传递:值传递不会结果;引用传递会保留更改结果


2.封装(包装):隐藏实现细节
  属性的封装:a.将属性私用化 b.提供公有getter和setter方法 c.添加访问控制
  public class Student{
   private String name;
   private int age;
   public void setAge(int age){
     if(age<25){
      this.age=25;
     }else{
      this.age=age;
     }
   }
   public int getAge(){
    return age;
   }
   ....
  }
 

3.构造函数:为成员变量赋初始值
 a.方法名必须与类名相同
 b.没有返回值类型(void也是一种返回值类型)
 c.构造函数使用 new关键字调用
   注意:每一个类在 编译时都会给 它加上一个无参的构造函数,如果显示的定义了有参构造,在编译时就不会添加无参构造
  
4.this关键字:代表对对象本身的引用(区分成员变量和局部变量)

5.方法的重载:方法名相同,参数列表不同
 参数列表不同:个数不同,类型不同,顺序不同
 
6.继承:继承代表了is-a关系(如果A是B,那么A继承了B),Java中的继承是单继承(一个类只能有一个父类,一个父类可有多个子类)
使用extends关键字建立类与类之间的继承关系,子类拥有父类非private修饰的属性和方法。
继承的优点:
1.提高代码的复用性。(Write Once,Only Once)
2.可以和多态结合使用提高程序可扩展性和可维护性
继承的缺点:
1.耦合性过高(父变子不得不变),对类的污染性比较严重
2.对子类暴露实现细节
class A{
 public void detail(){
 
 }
}
class B extends A{
 public void detail(){
 
 }
}
7. super关键字: super关键字代表对父类的应用。
 a.可以用super关键字调用父类的构造函数:必须出现在方法的第一行
 b.super访问父类的属性
 c.super访问父类中的方法

8.方法的重写:一般发生在父子类之间。
 子类中的方法名与父类的方法名一致,参数列表一致,返回值类型应相互兼容,子类修饰符>=父类修饰符范围

9.Java中的修饰符
                           本类   同包其他类   同包子类    异包子类    异包其他类
public                   Y             Y                   Y                   Y                Y
protected             Y             Y                   Y                   Y                N
缺省                      Y             Y                   Y                   N               N
private                  Y             N                   N                  N               N

10.static修饰符
 a.修饰成员变量(全局变量) 类名.属性名;
 b.修饰方法: 类名.方法名;
 c.修饰代码块(会自动执行) 
 
11. final关键字
 a.修饰变量:常量(在运行的过程中不能为其重新赋值)
 b.修饰方法:该方法不能被重写
 c.修饰类: 不能被继承

12.Object类:所有的基类
 toString();
 equals();
 hashCode();

13.抽象类(abstract)
使用abstract修饰的类叫抽象类,抽象类中可有抽象方法(使用abstract修饰的方法--没有方法体),抽象类中也可以没有抽象方法
抽象类不能实例化(使用使用new关键字创建实例)
如果一个类继承了抽象类,这个类必须实现抽象中所有的抽象方法
abstarct class A{
   public abstract void test();
}

14.多态:同一个"接口",因不同实现而执行不同的操作
生活中的多态:同一种物质不同的表现形态(水:固体,液态,气体)
优点:提高程序的可扩性和可维护性
多态和继承及方法的重写是密不可分的;

15.接口:
优点:1.规范  2.和多态结合使用(提高程序的可扩性和可维护性)
面向实现类的编程:耦合性过强(不推荐)
面向接口的编程(开闭原则):程序主架构使用接口
使用interface关键字定义接口
 注意:a.接口中所有的成员变量是常量: public static final
   b.接口中的方法是抽象方法(没有方法体)
   c.接口中默认的修饰符是public
   d.接口不能实例化
通过implements来实现接口(实现多个接口),接口实现类中必须实现接口中的定义的方法
  
interface A{
   int I=0;// public static final int I=0;
   void test();//public abstract void test();
}
interface B{
   void test2();
}
class C {
 void test3(){
 
 }
}
public class D extends C implements A,B{
   public void test(){
  
   }
   public void test2(){
  
   }
}

A a = new D();
B b = new D();
C c = new D();
D d = new D(); 
 


 

发表评论:
天涯博客欢迎您!