学习内容:
1、方法重写
2、import、package
3、封装、访问控制符:
4、static和final关键字
5、抽象类及接口
详细回顾:
方法重写是指子类继承父类时,对于父类的方法在方法名、参数列表都不变的情况下改变方法体,一般在引用类型是都会调用子类的方法。
重写发生在两个类中,类的关系是子父类关系,方法名及参数列表相同的情况下,子类重写了父类的方法;
只要跟子类相关,调用的就是子类重写的方法。
重写和重载的区别:
重载over load指的是在同一个类中,方法名相同,参数列表不同的多个方法,编译过程中根据参数类型和参数个数来判定调用哪个方法!重载为编译器绑定,根据类型找方法。
重写over ride指的是子类继承父类时,在子类中定义和父类方法名、参数列表相同,方法体不同的方法。在调用时,如果父类引用、父类创建对象就会调用父类的方法;不过不论是父类引用还是子类引用,只要是子类创建对象,那么就会调用子类重写的方法!重写为运行器绑定,根据对象找方法。
访问成员都是遵循编译器,根据引用的类型。
包package和调用其他包内的类的import:
包是用来防止类名重复,解决命名冲突问题;在其他包内若要调用一个类,可使用import先在类外面声明,然后再就可直接调用类名。
封装:java封装是什么?不是很理解,封装对外提供一个一个可调用、稳定的功能;但是把具体的细节隐藏起来,外界不可访问;提高对代码的稳定性、可维护性等。
访问控制符:public-公共 protected-受保护的 default-默认 private-私有?
public可提供给整个工程使用;
protected可提供给本类、同一个包的类、子类使用;
default可提供给本类、同一个包的类使用;
private只能在本类中使用;
根据编程中的实际选择不同的访问方式,一般成员变量都会设置为private,只是通过set等方法访问;
static和final关键字:
static表示静态,
①修饰成员变量:new一个对象时,一般成员变量会放在堆中,但是经过static修饰的成员变量会放在方法区中,不管这个类被引用创建了多少个对象,这个成员变量只是一份;通常通过“类名.成员变量名称”来调用该成员变量。
②修饰方法:static修饰方法时为静态方法,该方法便可以直接通过类名来访问,而不必通过创建对象来调用;一般用在工具方法和工厂方法之中;静态方法中可直接访问静态成员变量、方法,static.成员变量或方法;
③static块:static修饰代码块只执行一次,不管这个类被引用多少次,static块都只执行一次;static{};一般用在软件中加载静态资源。
final关键字:
①final修饰方法:final修饰的方法不可以被重写,目的也是为了防止不经意重写;
②final修斯类:final修饰的类不可以被继承;
③final修饰变量:final修饰成员变量即意味不可改变,此时可通过声明时初始化或者在构造方法中初始化,一旦初始化即意味不可改变;final修饰局部变量只要在使用前初始化,后也不可改变。
static final常量:
static final修饰的成员变量称为常量,必须在声明同时初始化,也不可被改变;而static final常量会在使用时被替换为常量;static final修饰的成员变量名称要全部大写。
抽象类:
1、使用abstract修饰一个方法,使该方法变为抽象方法,称为不完整的方法,此时该类也是不完整的,必须通过abstract来修饰类,该类就为抽象类;
2、抽象类是不完整的类,它的存在就是为了继承,只有继承它的子类来重写抽象类中的抽象方法,这样一个抽象类就可以有多个子类来重写符合该子类要求的方法;
3、抽象类不可以被实例化,因为其本身是不完整的;
4、抽象类的定义:abstract class 类名{ 定义成员变量;构造方法;public abstract 返回值类型 方法名{}}
5、只要一个类中包含了抽象方法,则该类一定死抽象类;
6、抽象类的继承,如果继承的子类不重写抽象类中的抽象方法,则该子类也一定是抽象类;如果重写了抽象方法,子类便是一个可以被实例化的正常类;
7、抽象类的意义:给子类提供公共类型;提高代码的重用;统一方法的定义,由子类来重写;
接口:抽象类中的抽象类
1、接口是指一个特殊的抽象类,只包含抽象方法的抽象类,用来定义一个标准、一个规范;
2、接口是使用interface来定义接口名称,如:interface 接口名称;在接口中定义的抽象方法默认访问级别是public,即使不写public系统也是默认的,默认方法是:public abstract 返回值类型 方法名称{};一般写为public 返回值类型 方法名称{};
3、接口的实现是通过implements来实现的,如:class 类名 implements 接口名称;一个类可以实现多个接口,接口名称之间通过“,”来分隔;
4、实现接口的类中必须实现接口中的所用抽象方法,全部变为正常方法;
5、接口之间可以继承,通过extends来继承,子接口有父接口全部的抽象方法;
6、类可以同时继承抽象类和实现接口,但一定要先继承抽象类再实现接口,即extends在前,implements在后,如:class 类名 extends 抽象类名 implements 接口名称{};
7、抽象类可以实现接口,而且不一定实现接口中所有的抽象方法,因为抽象类本身就不是一个有意义的类;但是接口不能继承抽象类。
8、接口中还可以定义由static final定义的成员变量常量。
总结:目前java面向对象的4个特点:继承、多态、接口、封装已经学了3种,除了多态还未学习,其他的理论至少学习了,但是目前掌握的不是很好,尤其是实际编程中总会遇到各种问题。尤其是不知道什么时候用抽象类、什么时候用接口,而且对于程序功能需求实现过程很难掌握。
今晚使用抽象类、接口知识编写了两次银行系统的小程序,但是对于接口、抽象类的东西还需要多多码字,多多编写。
2014年4月15日星期二
编程不难,难得是没有一个用心的心