赞
踩
Java程序设计追求“高内聚,低耦合”
高内聚:类的内部数据操作细节自己完成,不允许外部干涉
低耦合:仅对外暴露少量的方法用于使用
隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性、可维护性。通俗的说,把该隐藏的隐藏起来,该暴露的暴露岀来。这就是封装性的设计思想。
体现一:
将类的属性xxx私化(private),同时,提供公共的(public)方法来获取(getXxx)和设置(setXxx)此属性的值
体现二:不对外暴露的私有的方法
体现三:单例模式(将构造器私有化)
体现四:如果不希望类在包外被调用,可以将类设置为缺省的。
通过对不同的方法属性设置不同的权限修饰符来达到对类进行封装的目的。
权限从小到大顺序为:private < 缺省 < protected < public
具体的修饰范围:
修饰符 | 类内部 | 同一个包 | 不同包的子类 | 同一个工程 |
---|---|---|---|---|
pubic | T | T | T | T |
protect | T | T | T | |
缺省 | T | T | ||
private | T |
权限修饰符说明:
继承性格式:
class A extends B{}
A:子类、派生类、subclass
B:父类、超类、基类、superclass
关于继承的说明
一个类的初始化过程
子父类的初始化(分层初始化)
概述:
public class Test{
public static void main(String[] args) {
Student s = new Student();
System.out.println(s instanceof Person);
System.out.println(s instanceof Student);
}
}//两条语句的输出结果都是true
1.super的用法和this很像
2.用法(this和super均可如下使用)
在子类方法中访问一个变量h
为什么子类中所有的构造方法默认都会访问父类中空参数的构造方法?
方法重写概述:
注:
子类中重写的方法需要和父类被重写的方法具有相同的方法名、参数列表以及返回值类型。
子类重写父类方法时,不能使用比父类中被重写的方法更严格的访问权限。
“==”:方法名、形参列表相同。
“≤”:返回值类型和声明异常类型,子类小于等于父类。
“≥”:访问权限,子类大于等于父类。
定义:
在Java中,多态是指不同类的对象在调用同一个方法时所呈现出的多种不同行为。
说明:
通常来说,在一个类中定义的属性和方法被其他类继承或重写后,当把子类对象直接赋值给父类引用变量时,相同引用类型的变量调用同一个方法所呈现出的多种不同形态。
作用:通过多态,消除了类之间的耦合关系,大大提高了程序的可扩展性和可维护性。
注:
向上转型:
在多态的学习中,涉及到将子类对象当做父类类型使用的情况,此种情况在Java的语言环境中称为“向上转型”。即父类引用指向子类对象,我们称这个过程为向上转型,属于自动类型转换。
Animal an1 = new Cat(); // 将Cat类对象当做Animal类型来使用
Animal an2 = new Dog(); // 将Dog类对象当做Animal类型来使用
注意:将子类对象当做父类使用时不需要任何显式地声明,需要注意的是,此时不能通过父类变量去调用子类特有的方法。
向下转型
向上转型后的父类引用变量只能调用它编译类型的方法,不能调用它运行时类型的方法。这时,我们就需要进行类型的强制转换,我们称之为向下转型!
public class TestCasting {
public static void main(String[] args) {
Object obj = new String("软件学院"); // 向上可以自动转型
// obj.charAt(0) 无法调用。编译器认为obj是Object类型而不是String类型 /*
// 编写程序时,如果想调用运行时类型的方法,只能进行强制类型转换。 * 不然通不过编译器的检查。 */
String str = (String)obj;
// 向下转型
System.out.println(str.charAt(0)); // 位于0索引位置的字符
System.out.println(obj == str); // true.他们俩运行时是同一个对象
}}
注意:
① 使用强转时,可能出现ClassCastException的异常。
② 为了避免在向下转型时出现ClassCastException的异常,我们在向下转型之前,先进行instanceof的判断,一旦返回true,就进行向下转型。如果返回false,不进行向下转型。
③ 只有对象A是B的子类实例化对象或者在下层的子类,才能向下转型
A:成员变量
B:构造方法
C:成员方法
D:静态方法
为什么?
----由于成员方法存在方法重写,所以它运行看右边。
多态的好处:
多态的弊端:
现象:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。