Java面向对象(三)
Java中成员变量、局部变量、全局变量
成员变量:
在类中定义,用来描述对象将要有什么
局部变量:
在类的方法中定义,在方法中临时保存数据
区别:成员变量可以被本类的方法所使用,也可以被其他类的方法使用,局部变量只能在当前的方法中使用
作用域不同
1.局部变量的作用域仅限于定义他的方法
2.成员变量的作用域在整个类内部都是可见的
初始值不同
1.java会给成员变量一个初始值
2.java不会给局部变量赋予初始值
在同一方法中,不允许有同名局部变量
在不同的方法中,可以有同名局部变量
两类变量同名时,局部变量具有更高的优先级
类中的成员变量,必须实例化后再能使用成员变量
全局变量则可以直接调用,不需要实例化
全局变量:
Java提供了public static 关键字来实现一个全局的变量。如果程序只有一个包的话,那么将这个public static(被声明为static的变量不需要实例化对象即可直接使用类名来引用之) 修饰的变量放到程序初始化的地方去实现,就可以在这个程序的各个地方直接调用这个变量了。这虽然不叫全局变量,但实际使用中和全局变量的意思是一样的。
Java的封装、继承、多态
1.封装:
封装性就是把类(对象)的属性和行为结合成一个独立的相同单位,并尽可能隐蔽类(对象)的内部细节,对外形成一个边界,只保留有限的对外接口使之与外部发生联系。封装的特性使得类(对象)以外的部分不能随意存取类(对象)的内部数据(属性),保证了程序和数据不受外部干扰且不被误用。
实例
public class Student { private int no; public int getNo(){ return this.no; } public void setNo(int n){ this.no = n; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } private int age; private String name; private String gender; }
public class Exam1 { public static void main(String[] args) { Student stu = new Student(); stu.setNo(1); System.out.println(stu.getNo()); } }
2.继承:
继承是面向对象的三大特征之一,也是实现代码复用的重要手段。Java的继承是单继承,即子类只能继承一个父类,但父类可以有多个子类。
子类中可以声明与父类同名的成员变量,这时父类的成员变量就被隐藏起来了,在子类中直接访问到的是子类中定义的成员变量。
特点:增强了程序代码的可扩展性,继承具有单根性的特点(一个子类只能继承一个父类,而一个父类可以有多个子类),继承具有传递性的特点(一个子类继承父类,也默认继承了父类的父类)
3.多态
父类的对象可以由其任意子类来创建,但子类的对象不能由父类来创建,这个过程就是多态。