对象学习(二)

来源:互联网 发布:nginx 无法访问 编辑:程序博客网 时间:2024/05/24 01:51

一. 对象和类的概念

    1)对象看成静态属性(成员变量)和动态属性(方法)的封装体。

    2)类是描述同一类型的对象的一个抽象的概念,定义了这一类对象的所具有的静态和动态属性

    3)   类是一类对象的模板,对象是该类的一个具体实例。

二. 对象和类的关系

    1)关联关系:学院——教授/研究生

    2)继承关系:xx是一种xx

    3)  聚合关系(整体和部分):person—— limb/head/body(组合),球队——队长/队员(聚集)
    4)  实现关系:照顾宠物(喂食/和它玩)——工人/农民/国家干部
    5)多态:职员——交通工具——自行车/汽车/摩托车
 
 
 
三. 引用
     除基本类型之外的变量类型称之为引用类型,java中的对象是通过引用对其操作的。
     String s;//声明了一个String类型的引用变量,但并没有使它指向一个对象。
     s =  new String("hello world ! ");
     // 使用new语句创建了一个String类型的对象并用S指向它,以后可以通过s完成对其操作。
    注:1)类是静态的概念,代码区
           2)对象是new出来的,位于堆内存,类的每个成员变量在不同的对象中都有不同的值,而方法只有一份,执行的时候在占内存。
四. 对象的创建和使用(见对象学习一)
     补:方法重载
     方法重载指一个类中可以定义有相同的名字,但参数不同的多个方法。调用时,根据不同的参数表选择对应的方法。
     void info (){
             System.out.println("My id is " + id);
      }
      void info(String t){
             System.out.println(t + " " + id + " " + age);
       }
五. this关键字
      在类的方法定义中使用的this关键字代表使用该方法的对象的引用。
      this可以看作是一个变量,它的值是当前对象的引用。
六. static关键字
      1. 在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说,static成员变量只有一份。
      2. 用static声明的方法为静态方法,在调用该该方法时,不会将对象的引用传递给它,在static方法中不可访问非static的成员。
      3. 可以通过对象引用或类名访问静态成员。
七. package和import语句
     
八. 访问控制
九. 类的继承
      
        public class TestAccess {
        }
        class T {
             private int i = 0;
               int j = 0;
             protected int k = 0;
             public int m = 0;
 
             public void m() {
                i = 9;
              }
           }
         class TT {
             public void m() {
               T t = new T();
            System.out.println(t.k);
             }
           }
 
 
十. 方法的重写(注:要重写要对类名复制)
      1.
         1)  在子类中可以根据需要对从基类中继承来的方法进行重写。
         2)重写的方法必须和被重写的方法具有相同方法名称、参数列表、返回类型。
         3)重写方法不能使用比被重写方法更严格的访问权限
       2.
          在java类中使用super来引用基类的成分。
        3.       
          子类的构造的过程中必须调用其基类的构造方法。
          1)使用this(argument_list)调用本类的另外的构造方法
          2)如果调用super,必须写在子类构造方法的第一行
          如果子类的构造方法中没有显示地调用基类的构造方法,则系统默认调用基类无参数的构造方法
          如果都没有,则编译错误。 
         例:
         class A{
               protected void print(String s){
                     Sysem.out.println(s);
               }
              A(){print("A()");}
             public void f() {print("A:f()");}
           }
           class B extends A{
                B(){print("B()");}
                public void f() {print("B:f()");}
                public static void main(String[ ] args){
                  B b = new B(); b.f();
                }
           }
           先打印出A(),虽然没有显示调用基类,则默认调用基类无参构造函数。
十一. final关键字
十二. object类
         1.
           Object类是所有Java类的根基类,默认基类为Object类
           public class Person{
 
           }
           等价于
           public class Person xetends Object{
        
           }
          2. public boolean equals(Object obj)方法:提供定义对象是否“相等”的逻辑
              equals方法定义为:x.equals(y)当x和y是同一个对象的应用时返回true否则返回false
        
十三. 对象转型
          1. 一个基类的引用类型变量可以“指向”其子类的对象。
          2. 一个基类的引用不可以访问其子类对象新增加的成员(属性和方法)。
          3. 可以使用引用变量instanceof类名来判断该引用型变量所指向的对象是否属于该类或该类的子类
十四. 多态
十五. 抽象类
十六. 接口
 
 
 
 
0 0