zoukankan      html  css  js  c++  java
  • Java学习笔记(6)

    superclass(base class)和subclass

    扩展一个类的语法

    public class subClassName extends superClassName

    子类中通过super关键字来调用基类的构造器和方法

    重写方法:在子类中定义一个签名完全一样的方法,即实现了重写(与c#不同的是,c#必须显式的使用override修饰符或者使用new修饰符)

    私有方法和静态方法不能被重写。如果在子类中定义了一个签名完全一样的静态方法,那么父类中的静态方法被隐藏,可以通过SuperClassName.StaticMethoName来调用父类的方法

    重载的意思是定义多个名称相同但签名不同的方法,重写意思是在子类中对一个方法进行重新实现

    为了避免出错,可以在重写的方法前加上@Override注释,表明这个方法要重写基类中的方法,如果类型中不存在这个方法,编译器会给出错误提示,防止拼写错误,如下

    public class Circle extends GeometricObject {
       //.......
    
       @Override
       public String toString() {
         //........
       }  
    }

    多态意味着子类型的变量适用于基类型

    当调用一个对象的方法时,如果它的多个基类中都有这个方法,Java会沿着继承链从高级往低级找,一旦找到,就不会继续往后找,执行第一个找到的方法,即具体调用哪个类的方法,是在运行时动态决定的,所以称为动态绑定

    判断对象是否某一类型的实例,可通过如下语法

    if (myObject instanceof MyClass) {
       //................
    }

    类似c#中的如下写法

    if (myObject is MyClass) {
       //................
    }

    Object.toString()返回    类名@内存地址


    ArrayList<E>用于存储可变长度的数组,声明ArrayList<E>的语法如下

    ArrayList<java.util.Date> dataList = new ArrayList<java.uti.Date>();
    
    //或者
    ArrayList<java.util.Date> dataList = new ArrayList<>();//JDK 7及以后版本的简写方法
    java.util.Arrays.sort(array);//数据排序
    
    java.util.Collections.sort(arrayList);//ArrayList排序

    ArrayList的泛型类型不能是原始类型,必须是对象类型

    ArrayList<int> intList = new ArrayList<int>();//错误
    
    ArrayList<Integer> intList = new ArrayList<Integer>();//正确
            //Array转ArrayList
            String[] array = {"red", "yellow", "blue"};
            ArrayList<String> list = new ArrayList<>(Arrays.asList(array));
    
            //ArrayList转Array
            String[] array1 = new String[list.size()];
            list.toArray(array1);
    
            //排序
            Collections.sort(list);
    
            //最大值
            Collections.max(list);
            //最小值
            Collections.min(list);
            //混排
            Collections.shuffle(list);

    声明异常:声明异常更多的作用是告诉调用者,这个方法有可能抛出哪些异常,好让调用者有所准备,进行异常处理(c#中没有这个功能)

        public void MayThrowException() throws Exception......
        {
            
        }

    RuntimeException和Error属于非检测异常(unchecked exception),其他的异常属于检测异常(checked exception),编译器会强制程序员在要么在try...catch..中处理这些异常,要么在方法头声明这些异常

    通常当方法内部有throw....语句的时候,需要在方法头上加上throws, 如果方法内部用try....cactch..处理了异常,就不需要加throws

  • 相关阅读:
    HDU Intelligence System(tarjan+缩点)
    CF Easy Tape Programming(题意)
    poj 3694 Network(边双连通+LAC)
    20121116 CF DIV.2
    poj 2942 Knights of the Round Table(点双连通)
    解决Navihelper.dll(女生宿舍)病毒的方法一则
    在C++ Builder中调用FORTRAN生成的DLL
    过去的2004
    怎么取得DLL文件中的函数名列表?
    Gmail invitations
  • 原文地址:https://www.cnblogs.com/xclw/p/10529357.html
Copyright © 2011-2022 走看看