资源描述
,Corejava 6-11天串讲 面向对象,Jsd1107 串讲人:刘鸽,类与对象 类:同一类事物的抽象定义,对象的抽象 对象:类的个体实现,客观存在的一切都是对象 Student s;/Student是类,S是对象 s=new Student;/new student()是实例 属性的定义格式:修饰符类型 属性名;private String name; 构造方法的定义格式:修饰符类名(参数列表)一场跑出语句 Public Student(String name,int age) 方法的定义格式:修饰符返回值类型 方法名 (参数列表) 异常抛出语句 Public String getName(),封装 概念:封装也称为信息的隐藏,是指利用抽象数据类型将数据和基于数据的操作 封装在一起,使其构成一个不可分割的独立实体。 类中的私有属性,要对其给出一对读,写方法(getXxx(),setXxxx(),用来访问私有 属性,保证对私有属性的操作的安全性。 变量的概念 变量的作用域:从定义变量开始到定义它的结束括号 之内 变量的生命周期:指变量从创建到销毁并清除其所占的内存空间 变量的分类:成员变量 和 局部变量 成员变量分为:实例变量和类变量 实例变量:没有static声明的位实例变量; 类变量(静态变量):有static声明的变量称为类变量 局部变量:不直接在类体括号内声明的变量称为局部变量; 方法体内和语句块之内声明的变量都是局部变量,使用局部变量需要注意: 1 一定要先赋值后使用 2作用范围:从定义开始到定义它的代码块结束 3 在重合范围不允许两个局部变量命名冲突 Java中的参数传递 Java中所有的参数传递都是值传递 基本类型传递变量的确切值(返回副本); 引用类型(对象、数组等)传的都是应用的内存地址,继承、多态 继承的概念:对有着共同特性的多类事物,进行再抽象成一个雷,这个类就是父类 关键字:extends Java中只允许单继承,即一个类只能有一个直接的父类,但可以有多个间接父类 属性、非私有方法都能继承。构造、私有方法都不能被继承。 方法的重载: 如果有两个方法同名但方法的参数不同,就说一个方法是另一个方法的重载。 重载发生在:1、本类内部的方法之间 2、有继承关系的,还有继承来的方法与本类方法之间。 必须满足的条件:1、至少有两个方法同名 2、同名的方法中,其参数类型、个数、顺序至少有一个不同。 3、方法的返回类型可以不相同;方法的修饰符可以不相同。 4、子类不会继承父类的构造方法,方法的覆盖 概念:子类中定义的方法,其名称、返回类型及参数列表如果跟父类中某个方法 的名称、返回类型及参数列表相同,就说子类的方法覆盖了父类的方法; 注意:参数列表的顺序、个数、类型必须完全一致。 Public calss Base public calss Base Public void method() public void method(). Public calss Sub extends Base public class Sub extends Base Public int method() public void method(). Return 0; public int method() return 0; 这两段代码是否正确 子类方法不能缩小父类方法的访问权限,重写必须满足的条件 1、子类方法不能抛出比父类方法更大的异常 2、发生在父子类之间,有别于重载 3、父类中的静态方法不能被子类覆盖成非静态方法 4、父类中的私有方法不能被覆盖 父类的抽象方法,在子类中可以通过两种方法覆盖 子类实现父类的抽象方法 子类重新声明父类的方法 方法重载与方法覆盖的异同 共同点:1、都要求方法名相同 2、都可以用于抽象方法和非抽象方法 不同点:重写要求必须相同,重载要求参数列表必须不同 重写要求返回类型必须一致,重载没有要求 重写用于父子类间,重在用于同类(但包括继承来的方法) 重写对访问权限和抛出异常有要求,重载没有 重写只能又一次,重载可以有多次,This 和 super关键字 This访问本类中定义属性和方法 this. this. Super 访问父类中定义的属性和方法 this. this. 如何使用构造 子类构造方法中使用suoer调用父类的构造方法 本类中使用this调用本类其它构造方法 继承关系中构造的调用 子类如何调用父类的构造 1、子类的构造方法中可使用super语句调用父类的构造方法,格式为:super( 2、如果子类的构造方法中既没有显式调用父类构造方法,也没有使用this关键字 调用同一个类的其它重载构造方法,则系统会默认调用父类的无参构造方法。 3、如果子类构造方法中级未显式调用父类构造方法,而父类中有没有无参构造 则编译出错。,修饰符 可见性 Public protected 默认 private 同一个类中 同一包中的任何类 同一包中的子类 包外的子类 包外的任何非子类 Abstract修饰符 abstract修饰的方法表示抽象方法 抽象方法没有方法体 抽象方法用来描述系统具有什么功能,但不提供具体实现 抽象类中可以没有抽象方法,担忧抽象方法的类必须定义成抽象类; 代码演示 没有抽象的构造方法,也没有抽象的静态方法 抽象类中可以有非抽象的构造方法 代码演示,Static Static修饰符用来修饰类的成员变量、成员方法和代码块,修饰的成员变量表示 静态变量,可以直接通过类名.来访问。 静态方法内不允许访问非静态变量 静态初始化代码块在类加载的时候运行,所以只执行一次。 什么时候类加载 第一次需要使用类信息时加载。加载的几种情况: 1、调用静态成员时,会加载静态成员真正所在的类及其父类。通过子类调用父类 的静态成员时,只会加载父类而不会家在子类。 2、第一次new对象的时候加载(第二次再new同一个类时,不需要再加载) 3、加载子类会先加载父类,抽象类及抽象方法不能被final修饰 Final 用final修饰的类,不能被继承,没有子类 。修饰的方法不能被子类的方法覆盖 用final修饰的变量表示常量,只能被赋值一次 final不能用来修饰构造方法 Final修饰符可以修饰静态变量、实例变量和局部变量,分别表示静态常量、实例 常量、局部常量 Final变量必须显示初始化 Final类型的实例变量,可以在定义变量时初始化,也可以在构造方法中初始化 Final类型的静态变量,只能在定义变量时进行初始化 Final修饰的应用类型的变量始终引用一个对象(指向始终不变),可以修改对象内容,
展开阅读全文