zoukankan      html  css  js  c++  java
  • Java

    类与类之间的关系有:

        A    is    - a   泛化(继承、实现)

        A has - a   包含(组合、聚合、关联)  

        A use - a 依赖(依赖)

    继承(is - a)

    继承是所有OOP语言不可缺少的部分,在java中使用extends关键字来表示继承关系。当创建一个类时,总是在继承,如果没有明确指出要继承的类,就总是隐式地从根类Object进行继承。

     1.子类继承父类(extends)

      (1)子类可以继承父类的 public 和 protected 属性和方法当做自己 的来使用,不能够继承 private 成员变量;

      (2)子类可以添加自己独有的属性和方法;

      (3)如果子类从父类中继承的方法不能满足子类的需要,那么可以在子类中重写(覆盖)父类的方法,更多的是指改变方法内容;

      (4)每一个类都有继承类,如果不写 extend 关键字,则默认继承 Object (Object没有父类),如果写了 extend ,则继承extend后的那个父类;

      (5)Java中继承是单个存在的(单继承),每一个类只能有一个继承类(即在 extend 后面只能写一个类);

          但是可以通过传递的方式实现多继承的效果,

      (6)Java在继承中的存储形式

        (7)关于 this 和super 的使用

          this 和 super 都是指代词,代替的是对象;

          this代替的是当前执行方法时的那个对象,不一定是当前类的;

          super代替的是当前执行方法时的对象的父类对象;

          this 与 super 都可以调用一般属性 和一般方法;

          都可以放置在类成员的任意位置(属性、方法、构造、块)

          可以调用构造方法(要放在构造方法的第一行);

                this和super在构造方法中调用另一个类的构造方法不能同时出现在第一行

                构造方法之间不能来回互相调用

    子类不能继承父类的构造器(构造方法或者构造函数),但是父类的构造器带有参数的,则必须在子类的构造器中显式地通过super关键字调用父类的构造器并配以适当的参数列表。

    public class Animal{
            public Animal(){}
            public Animal(int a){
                System.out.println("我是动物的Int型构造方法");
            }
            public void sleep(){
                System.out.println("我是动物的睡觉方法");
            }
            public void eat(){
                System.out.println("我是动物的吃饭方法");
            }
    
    }
    
    public class Preson extends Animal{
        public Preson(){}
        public Preson(int a){
            System.out.println("我是人类的Int型构造方法");
        }
    
        public void sleep(){
            System.out.println("我是人类的睡觉方法");
        }
        public void eat(){
            System.out.println("我是人类的吃饭方法");
        }
    }
    
    public class Test {
        public static void main(String[] args) {
            Preson animal = new Preson();
            animal.eat();
            animal.sleep();
        }
    }

    Object类中的方法
         hashCode()    将对象在内存中的地址经过计算得到一个int整数
                   public native int hashCode();
         equals()    用来比较两个对象的内容  Object默认效果是==
                   ==可以比较基本类型(比较值) 可以比较引用类型(比较地址)
                  equals方法时Object类中继承过来的方法  默认效果比较地址 
                  如果想要改变其规则 可以进行方法重写
                    public boolean equals(Object obj){
                       return (this == obj);
                    }

       toString()       打印输出时将对象变成String字符串
                  public String toString(){
                     return this.getClass().getName()+"@"+Integer.toHexString(this.hashCode());
                  }
        getClass()     获取对象对应类的类映射(反射)
        wait()       线程进入挂起等待状态 存在方法重载
        notify()     线程唤醒
        notifyAll()   唤醒所有
        finalize()     权限修饰符是protected  在对象被GC回收的时候  默认调用执行的方法
                final  finally    finalize区别
                protected void finalize(){
               }
        clone()     权限修饰符是protected  为了克隆对象
  • 相关阅读:
    [Silverlight]App.Current Events中的Startup,UnhandledException以及Exit事件
    [Silverlight]使用DoubleAnimation为对象添加动画效果
    [翻译]ASP.NET MVC Tip #39 – 在ASP.NET MVC中使用分布式缓存
    [翻译]ASP.NET MVC CodePlex Preview 5 更新细节(未完成)
    [Silverlight]打造具有放大缩小效果的图片导航
    [Silverlight]Silverlight2中打造SplashScreen 1
    [Silverlight]如何创建超链接
    [Silverlight]TextBlock控件全攻略
    [转]ajax框架比较
    MonoRail学习之源码放送
  • 原文地址:https://www.cnblogs.com/yyanghang/p/11067138.html
Copyright © 2011-2022 走看看