zoukankan      html  css  js  c++  java
  • 《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时,尽量不要用反射。因为应用开发的反射比较脆弱。
  • 相关阅读:
    java。equal()和== 的区别
    java。封装
    java。OOA,OOD,OOR
    java。类和对象
    java、数组;堆区,栈区
    java。 break和continue区别
    NYOJ 228 士兵杀敌(五)【差分标记裸题】
    2017CCPC 杭州 J. Master of GCD【差分标记/线段树/GCD】
    CF1025B Weakened Common Divisor【数论/GCD/思维】
    网络流算法笔记
  • 原文地址:https://www.cnblogs.com/tzzt01/p/11592251.html
Copyright © 2011-2022 走看看