博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Java核心技术卷I》——第5章 继承
阅读量:5014 次
发布时间:2019-06-12

本文共 2285 字,大约阅读时间需要 7 分钟。

在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时,尽量不要用反射。因为应用开发的反射比较脆弱。
posted on
2019-09-26 15:47  阅读(
...) 评论(
...) 收藏

转载于:https://www.cnblogs.com/tzzt01/p/11592251.html

你可能感兴趣的文章
浏览器加载、解析、渲染的过程
查看>>
开放api接口签名验证
查看>>
sed 常用操作纪实
查看>>
C++复习:对C的拓展
查看>>
校外实习报告(九)
查看>>
android之android.intent.category.DEFAULT的用途和使用
查看>>
CAGradientLayer 透明渐变注意地方(原创)
查看>>
织梦DEDE多选项筛选_联动筛选功能的实现_二次开发
查看>>
iOS关于RunLoop和Timer
查看>>
SQL处理层次型数据的策略对比:Adjacency list vs. nested sets: MySQL【转载】
查看>>
已存在同名的数据库,或指定的文件无法打开或位于 UNC 共享目录中。
查看>>
MySQL的随机数函数rand()的使用技巧
查看>>
thymeleaf+bootstrap,onclick传参实现模态框中遇到的错误
查看>>
python字符串实战
查看>>
wyh的物品(二分)
查看>>
12: xlrd 处理Excel文件
查看>>
综合练习:词频统计
查看>>
中文url编码乱码问题归纳整理一
查看>>
Cesium应用篇:3控件(3)SelectionIndicator& InfoBox
查看>>
58. Length of Last Word(js)
查看>>