• 《Java核心技术卷I》——第5章 继承


    在C++中,没有提供用于表示抽象类的特殊关键字。只要有一个纯虚函数,这个类就是抽象类。

    hashCode()方法是定义在Object类中,因此每个对象都有一个默认的散列码,其值为对象的存储地址。

    绝大多数的toString方法都遵循这样的格式:类名[域值],最好通过调用getClass().getName()获得类名。如:

    public String toString(){
        return getClass().getName() 
        + "[name=" + name
        + ", salary=" + salary
        + "]"; 
    }

    int[] nums = {1,2,3};

    String s = Arrays.toString(nums);将生成字符串"[1,2,3]"。要想打印多维数组(即,数组的数组)则需要调用Arrays.deepToString方法。

    Java的老版本中,程序员使用Vector类实现动态数组。不过,ArrayList类更加有效,没有任何理由一定要使用Vector类。

    参数数量可变的方法

    在Java5.0以前,每个Java方法的参数数量是固定的。5.0之后的版本提供了可以用可变的参数数量调用的方法。例如:

    /**
     * 参数数量可变的方法
     */
    public class Demo1 {
        public static void main(String[] args) {
            Demo1.largest(1, 2);
            Demo1.largest(1, 2, 3);
        }
    
        public static void largest(int... ints) {//注意此处参数列表的格式
            int largest = Integer.MIN_VALUE;
            for(int n : ints) {
                if (n > largest) {
                    largest = n;
                }
            }
        }
    }

    枚举类

    import java.util.Scanner;
    
    public class EnumTest {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            System.out.println("Enter a size: (SMALL, MEDIUM, LARGE, EXTRA_LARGE)");
            String input = in.next().toUpperCase();
            Size size = Enum.valueOf(Size.class, input);
            System.out.println("size:" + size);
            System.out.println("abbreviation=" + size.getAbbreviation());
            if (size == Size.EXTRA_LARGE) {
                System.out.println("Good job--you paid attention to the _.");
            }
        }
    
        enum Size {
            SMALL("S"), MEDIUM("M"), LARGE("L"), EXTRA_LARGE("XL");
    
            private String abbreviation;
    
            Size(String s) {
                abbreviation = s;
            }
    
            public String getAbbreviation() {
                return abbreviation;
            }
    
            public void setAbbreviation(String abbreviation) {
                this.abbreviation = abbreviation;
            }
        }
    }

    运行结果:

    Enter a size: (SMALL, MEDIUM, LARGE, EXTRA_LARGE)
    extra_large
    size:EXTRA_LARGE
    abbreviation=XL
    Good job--you paid attention to the _.

     继承设计的技巧

    1. 将公共成员和方法放在父类中。
    2. 不要使用受保护的域(成员变量)。第一,破坏了封装性;第二,Java中,同一个包中的所有类都可以访问protected修饰的域,不管它是不是这个类的子类。
    3. 使用继承实现“is-a”的关系。比如钟点工和全职员工不是“is-a”的关系,不该让钟点工继承Employee类。
    4. 除非所有继承的方法都有意义,否则不要使用继承。
    5. 在开发applet时,尽量不要用反射。因为应用开发的反射比较脆弱。
  • 相关阅读:
    MysQL使用一与Python交互
    WPF三大模板简介
    Java Servlet生成JSON格式数据并用jQuery显示
    JSP之应用Servlet过滤器进行身份验证
    Java调用SQL Server存储过程
    JSP之Cookie对象使用
    JSP之response对象使用
    JSP之静态include指令、动态Include指令
    JSP之使用useBean、setProperty、getProperty指令
    jspSmartUpload使用初步
  • 原文地址:https://www.cnblogs.com/tzzt01/p/11592251.html
Copyright © 2020-2023  润新知