第三讲 Java的面向对象特征(继续基础部分......)

 
A. 面向对象的基本特征
1.封装性
2.继承性
3.多态性
 
B.   对象
实例化 :运算符 new 为对象分配内存空间,它调用对象的构造方法,返回引用;一个类的不同对象分别占据不同的内存空间。
 
 
C. 重写与重载区别
方法 重写 : 子类中重写的方法和父类中被重写的方法要具有相同的名字,相同的参数表和相同的返回类型,只是函数体不同。
 
方法重载: 是指多个方法享有相同的名字,但是这些方法的参数必须不同,或者是参数的个数不同,或者是参数类型不同。返回类型不能用来区分重载的方法。
 
 
重写方法的调用原则:java运行时系统根据调用该方法的实例,来决定调用哪个方法。对子类的一个实例,如果子类重写了父类的方法,则运行时系统调用子类的方法;如果子类继承了父类的方法(未重写),则运行时系统调用父类的方法。
 
D. final 关键字
   final 关键字可以修饰类、类的成员变量和成员方法,但final 的作用不同。
  
   1) final 修饰成员变量:
   final修饰变量,则成为常量,例如
   final type variableName;
  修饰成员变量时,定义时同时给出初始值,而修饰局部变量时不做要求。
 
   2) final 修饰成员方法:
   final修饰方法,则该方法不能被子类重写
   final returnType methodName(paramList){
  …
   }
 
   3) final 类:
   final修饰类,则类不能被继承
   final class finalClassName{
  …
   }
 
 
E. 实例成员和类成员(static 关键字)
  用 static 关键字可以声明类变量和类方法,其格式如下:
   static type classVar;
   static returnType classMethod({paramlist}) {
  …
   }
 
  如果在声明时不用 static 关键字修饰,则声明为实例变量和实例方法。
   1) 实例变量和类变量
  每个对象的实例变量都分配内存,通过该对象来访问这些实例变量,不同的实例变量是不同的。
  类变量仅在生成第一个对象时分配内存,所有实例对象共享同一个类变量,每个实例对象对类变量的改变都会影响到其它的实例对象。类变量可通过类名直接访问,无需先生成一个实例对象,也可以通过实例对象访问类变量。
 
   2) 实例方法和类方法
  实例方法可以对当前对象的实例变量进行操作,也可以对类变量进行操作,实例方法由实例对象调用。
但类方法不能访问实例变量,只能访问类变量。类方法可以由类名直接调用,也可由实例对象进行调用。类方法中不能使用 this或super关键字。
 
举例 :
class Member {
    static int classVar ;
    int instanceVar ;
     static void setClassVar( int i) {
    classVar =i;
    //instanceVar=i;
    }
    static int getClassVar()
    { return classVar ; }
    void setInstanceVar( int i)
    { classVar =i;
    instanceVar =i; }
    int getInstanceVar()
    { return instanceVar ; }
}
public class MemberTest{
    public static void main(String args[]) {
    Member m1= new Member();
    Member m2= new Member();
    m1.setClassVar(1);
    m2.setClassVar(2);
    System. out .println( "m1.classVar=" +m1.getClassVar()+ " " + "m2.ClassVar=" +m2.getClassVar());
    m1.setInstanceVar(11);
    m2.setInstanceVar(22);
    System. out .println( "m1.InstanceVar=" +m1.getInstanceVar()+ " " + " m2.InstanceVar=" +m2.getInstanceVar());
    m2.setInstanceVar(44);
    System. out .println( "m1.InstanceVar=" +m1.getInstanceVar()+ " " + " m2.InstanceVar=" +m2.getInstanceVar());
    }
}
思路:
m1 -> 有自己的 instanceVar 成员变量
m2 -> 有自己的 instanceVar 成员变量
但是 ,m1 m2 将共同指向类变量 classVar
 
F. 抽象类和接口
   1.抽象类
Java 语言中,用 abstract 关键字来修饰一个类时,这个类叫做抽象类,用 abstract 关键字来修饰一个方法时,这个方法叫做抽象方法。格式如下:
   abstract class abstractClass{ …} // 抽象类
   abstract returnType abstractMethod([paramlist]) // 抽象方法

  抽象类必须被继承抽象方法必须被重写。抽象方法只需声明,无需实现;抽象类不能被实例化,抽象类不一定要包含抽象方法。若类中包含了抽象方法,则该类必须被定义为抽象类。
   2.接口
接口是抽象类的一种
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值