标签:java
IT十八掌第五天总结 class 成员变量,属性 成员函数,方法. 构造函数 ------------- 和类同名。 没有返回值。 javabean的规范 ------------------ 私有的属性, 公有的getter/setter. 代码块 ---------------- 1.局部代码块 在函数内部定义{}, 不能使用static修饰。 2.构造代码块 也是类的成员,和成员变量和成员函数同级。 构造对象时,先调用构造代码块,然后是构造函数。 3.静态代码块 构造代码块 + static修饰符。 静态代码块在类加载的时候执行,而且只执行一次。 手动控制类加载使用Class.forName("classname"),默认加载类时,执行代码块。 Class.forName(String,boolean initialize,ClassLoader)可以控制加载时是否初始化。 继承 多个类中存在相同的属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性 和行为,只要继承那个类即可。 多个类可以称为子类,单独的类可以称为父类或者超类。 子类可以直接访问父类中的非私有的属性和行为。 通过extend关键字让类和类之间产生继承关系。 class SubDemo extends Demo {} 让B类继承A类 class B extend A { …… } 继承的出现提高了代码的重用性,。 继承的出现让类和类之间产生了关系,提供了多态的前提。 继承的特点 java 只支持单继承,不支持多继承 一个类只只能有一个父类,不可以有多个父类。 class A {} class AA {} class B exdents A {} class c exdents A ,AA //error java支持多层继承 class A {} class B exdents A {} class C exdents B {} Super super和this的用法相像 this代表本类对象的引用 super代表父类的内存空间的标识。 当子父类出现同名成员时,可以用super进行区分 子类要调用父类构造函数时,可以使用super语句。 在本类当中 super(); 调用父类的构造函数 super. 调用父类的方法 this. 调用本类的其他方法 this()调用本类的其他构造函数 this() super() 构造函数必须是第一行 this . super. 可以在任意位置调用 子类中所有的构造函数默认都会访问父类中空参数的构造函数 当父类中没有空参数的构造函数时,子类的构造函数必须通过this或者super 语句指定要访问的构造函数。 子类重写的权限要大于父类的方法权限(权限可放大,不能缩小(不能私有化))。 final --------------- 修饰类,表示 类不能被继承 修饰方法 表示方法不能被修改 私有方法可以使用final 可以编译 但是无意义 final修饰的变量是一个常量。只能被赋值一次。 (如果未赋值,编译无法通过) abstract 抽象的 ------------- 1. 没有方法体的方法, 必须使用abstract 修饰 2.抽象方法只能存在于抽象类中 3.抽象类也必须使用abstract 修饰。 4. 抽象类不一定要有抽象方法 5.abstract+static 是非法的修饰符组合 final+abstracr 非法的修饰符组合 private +abstract 是非法的修饰符组合 6.面向接口的编程,降低耦合度(便于维护)增强可扩展性 抽象方法只有方法声明,没有方法体,第一在抽象类中 格式: 修饰符 abstract 范围值类型 函数名(c参数列表); 抽象类不可以被实例化,不能被 new 创建对象 抽象类是具体事物抽取出来的,本身是不具体的,无对应的实例。 抽象类即使创建了对象,调用抽象方法也没有意义。 抽象类通过子类来实例化。 该子类必须完全覆盖掉抽象类中的所有抽象方法才可以创建 接口 interface -------------------- 格式 interface {} 接口的成员修饰符是固定的 成员变量:public static final (常量) 成员函数:public abstract 发现接口中的成员都是public 接口和接口之间允许继承 接口允许多重继承 类和接口之间是实现关系 *.文字阐述静态代码块的作用。 A : 静态代码块在类加载的时候执行,而且只执行一次。 可以自定义静态代码段的执行 *.构造代码块与构造函数的调用顺序如何?和方法的声明位置是否有关?为什么?构造代码块的作用是什么? A: 顺序为 构造代码块 --> 构造函数 ,和方法的声明位置无关。 也是类的成员,和成员变量和成员函数同级。主要是为了提高代码的重用性并对成员变量进行初始化。 *.类加载时,是否一定会执行静态代码块?如何手动控制类加载? A:类加载是默认是会自动加载执行静态代码块的, 手动控制类加载使用Class.forName("classname"),默认加载类时,执行代码块。 *.定义类Person,Man,Woman形成继承关系。 A: /** * extends格式 : class B extends A {} B-->A */ class Person { //定义Person 类 } class Man extends Person{ //让man 类继承Person } class Woman extends Person{ } *.什么是抽象方法?什么是抽象类?抽象类是否有构造函数,是否可以重载? A: 抽象方法是 必须使用abstract 来修饰的没有方法体必须有子类来具体实现的方法‘ 包含抽象方法的类就是抽象类也必须使用abstract 来修饰。 抽象类一样有构造函数 同样可以被重载 *.抽象修饰符有哪些非法组合?并给出合理的解释? A:abstract+static static修饰的是公共类的属性,抽象的直接访问没有意义。 final+abstracr final 是最终的不能被更改,而abstract 是需要子类来实例化,需要对它进行操作的。 private +abstract 私有化是不能被继承的,而abstract是需要子类来实例化的 *.super和this作用以及用法以及注意事项? A:Super super和this的用法相像 this代表本类对象的引用 super代表父类的内存空间的标识。 当子父类出现同名成员时,可以用super进行区分 子类要调用父类构造函数时,可以使用super语句。 在本类当中 super(); 调用父类的构造函数 super. 调用父类的方法 this. 调用本类的其他方法 this()调用本类的其他构造函数 this() super() 构造函数必须是第一行 this . super. 可以在任意位置调用 *.定义接口 1.IWhite 2.IRich 3.IBeanti 4.定义类,实现以上三个接口.(WomenStar) 5.定义土豪类(EarchRicher.marring(...)) /** * interface 接口的格式是: interface {} */ //定义三个 白、富、美 interface IWhite{ //定义白 public void Whiteing (); } interface IRich{ //定义富 public void Riching (); } interface IBeautiful{ //定义美 public void Beautifuling (); } //定义一个接口继承白、富、美 三个接口 interface WomanStart extends IWhite,IRich,IBeautiful{ } //定义土豪类 class EarchRicher{ // public void marry(WomanStart MM){ System.out.println("FIND 白富美 !!"); } } class EarchRicherMan { public static void main(String[] args){ WomanStart W = new WomanStart(){ public void Whiteing (){ } public void Riching (){ } public void Beautifuling (){ } }; EarchRicher M =new EarchRicher(); M.marry(W); } }
标签:java
原文地址:http://670597669.blog.51cto.com/10018785/1772392