0613 Java核心技术卷1
2021-05-12 23:31
标签:OLE getc 结果 new ams 技术 getname 类型信息 实例化 5.9 抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。 由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。 父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。 在Java中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。 5.10 受保护访问 大家都知道,最好将类中的域标记为private,而方法标记为public,任何声明为private的内容对其他类都是不可见的,子类也不能访问超类的私有域 有些时候,人们希望超类中的某些方法允许被子类访问,或允许子类的方法访问超类的某个域,为此需要把这些方法或域声明为protected 归纳一下Java用于控制可见性的四个访问修饰符 1)仅对本类可见-----private 2)对所有类可见-----public 3)对本包和所有子类可见-----protected 4)对本包可见-----默认,不需要修饰符 5.2 Object:所有类的超类 Object类是Java中所有类的始祖,在Java中每个类都是由它扩展而来的,但是并不需要明确地指出超类,Object会被认为是这个类的超类,可以使用Object类型的变量引用任何类型的对象 1.equals方法 Object类中的equals方法用于检测一个对象是否等于另一个对象 2.相等测试与继承 Java语言规范要求equals方法具有下面的特性: 1)自反性:对于任何非空引用x,x.equals(x)应该返回true; 2)对称性:对于任何引用x和y,当且仅当y.equals(x)返回true,x.equals(y)也应该返回true 3)传递性 对于任何引用x,y和z,如果x.equals(y)返回true,y.equals(z)返回true,x.equals(z)也应该返回true 4)一致性:如果x和y引用的对象没有发生变化,反复调用x.equals(y)应该返回同样的结果 5)对于任意非空引用x,x.equals(null)应该返回false 3.hashcode方法 可以利用hashcode方法判断两个对象是否不相等,如果hashcode产生的散列码不相等,两个对象必定不相等,如果产生的散列码相等,则有可能两个对象相等,要判断两个对象是否相等必须使用equals方法 4.toString方法 它用于返回表示对象值的字符串,强烈建议为自定义的每一个类都增加toString方法 5.3 泛型数组列表 在Java中,解决数组大小必须初始化的问题就是使用ArrayList类,它可以自动调节数组容量,例如: ArrayList 这被称为"菱形"语法,可以结合new操作符使用菱形语法,编译器会检查新值是什么 使用add方法可以将元素添加到数组列表中 1.访问数组列表元素 数组列表自动扩展容量增加了访问元素语法的复杂程度,使用 get和set方法可以实现访问或改变数组元素的操作 5.4 对象包装器与自动装箱 对象包装器拥有很明显的名字:Integer,Long,Float,Double,Short,Byte,Character,Void和Boolean,对象包装器类是不可变的,即一旦构造了包装器,就不允许更改包装在其中的值,同时,对象包装器类还是final,因此不能定义它们的子类 5.5 参数数量可变的方法 public static double max (double... values){ // 重点在... 只能在最后一个参数使用 ... } 5.6 枚举类 定义枚举类型: public enum Size { SMALL , MEDIUM, LARGE, EXTRA_LARGE }; 这个声明定义的类型是一个类,在此尽量不要构造新对象,在比较两个枚举类型的值时,直接使用"=="即可 所有的枚举类型都是Enum类的子类,他们继承了这个类的许多方法,其中最有用的就是toString,例如 Size,SMALL.toString()将返回字符串"SMALL" toString的逆方法时静态方法valueOf,例如: Size s = Enum.valueOf(Size.class,"SMALL"); // 将s设置成Size.SMALL 5.7反射 1.Class类 Object类中的getClass()方法将会返回一个Class类型的实例 最常用的Class方法是getName,这个方法将返回类的名字,如果类在一个包里,包的名字也作为类名的一部分 2.捕获异常 程序运行过程中发生错误时,就会抛出异常,抛出异常的前提是有一个捕获异常的控制器对异常情况进行处理,如果没提供处理器,程序就会终止,并在控制台打印一条信息 5.8 继承的设计技巧 1.将公共操作和域放在超类 2.不要使用protected域 3.使用继承实现"is-a"关系 4.除非所有继承方法都有意义,否则不要使用继承 5.在覆盖方法时,不要改变预期的行为 6.使用多态,而非类型信息 7.不要过多的使用反射 0613 Java核心技术卷1 标签:OLE getc 结果 new ams 技术 getname 类型信息 实例化 原文地址:https://www.cnblogs.com/aLin002/p/13112214.html// 抽象类的定义
public abstract class Employee
{
private String name;
private String address;
private int number;
public Employee(String name, String address, int number)
{
System.out.println("Constructing an Employee");
this.name = name;
this.address = address;
this.number = number;
}
}
// 继承抽象类
public class Salary extends Employee
{
private double salary; //Annual salary
public Salary(String name, String address, int number, double
salary)
{
super(name, address, number);
setSalary(salary);
}
}
// 类初始化
public class AbstractDemo
{
public static void main(String [] args)
{
Salary s = new Salary("Mohd Mohtashim", "Ambehta, UP", 3, 3600.00);
Employee e = new Salary("John Adams", "Boston, MA", 2, 2400.00);
}
}