一,成员变量和局部变量的区别
1、在类中声明位置不同
成员变量(属性):直接定义在类的一对{}内。
局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量。
2、权限修饰符的不同
成员变量:可以在声明成员变量时,指明其权限,使用权限修饰符。
常用的权限修饰符:private、public、default、protected
局部变量:不可以使用权限修饰符。
3、默认初始化值的情况
成员变量:类的属性,根据其类型,都有默认初始化值。初始化值同数组的默认初始化值。
整型(byte、short、int、long):0
浮点型(float、double):0.0
字符型(char):0或’\u0000’
布尔型(boolean):false
引用数据类型(类、数组、接口):null
局部变量:没有默认初始化值,在调用之前一定要初始化
特别地,形参在调用时进行赋值即可
4、在内存中加载的位置
成员变量:加载到堆空间(非static)
局部变量:加载到栈空间
————--------
二,继承
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
继承的作用:通过继承可以快速创建新的类,实现代码的重用,提高程序的可维护性,节省大量创建新类的时间,提高开发效率和开发质量。
注意:
子类不能选择性继承父类;
Java不支持多重继承,但一个类可以实现多个接口,从而克服单继承的缺点;
构造方法不会被子类继承,但可以从子类中调用父类的构造方法。
继承的优点
继承过来的字段和方法,可以像任何其他字段和方法一样被直接使用;
在子类中可以声明一个与父类中同名的新字段或静态方法,从而“隐藏”父类中的字段或方法;
可以在子类中声明一个在父类中没有的新字段和方法;
可以在子类中编写一个父类当中具有相同名的新实例方法,这称为“方法重写”或“方法覆盖”;
可以在子类中编写一个调用父类构造方法的子类构造方法,既可以隐式地实现,也可以通过使用关键字super来实现。
,方法重写,
子类继承了父类中的所有成员及方法,但在某种情况下,子类中该方法所表示的行为与其父类中该方法所表示的行为不完全相同,例如,在父类语言中定义了说话这个方法,而在子类中说话的方法是不同的:外国人说英文,中国人说中文,这时我们就需要重写或隐藏父类的该方法。
成员变量的隐藏
在编写子类时,我们仍然可以声明成员变量,一种特殊的情况就是,所声明的成员变量的名字和从父类继承来的成员变量的名字相同(声明的类型可以不同),在这种情况下,子类会隐藏所继承的成员变量。
成员变量的隐藏
1.子类对象以及子类自己定义的方法操作与父类同名的成员变量是指子类重新声明的这个成员变量。
2.子类对象仍然可以调用从父类继承的方法操作被子类隐藏的成员变量,也就是说,子类继承的方法所操作的成员变量一定是被子类继承或隐藏的成员变量。
接口组成与应用
三,接口的组成与应用
创建一个接口
interface com{//接口体中有抽象方法和常量
有default实例方法
public default int max (int a ,int b ){
return a>b?a:b;
}
接口体中的static方法
public static void f(){
}
}
接口的实现
用类实现:class A implements com