}
//方法:获得老师所教授的课程名
publicvoid getClass(String name, String teachClass) {
System.out.println(name + “老师所教授的课程是”+ teachClass);
}
}
//创建老师类的一个具体对象``public class Main {
public static void main(String[] args) {
//new一个具体对象teacherA`` TeacherteacherA = new Teacher();
//具体对象的属性值
teacherA.setName("马冬梅");
teacherA.setSex("女");
teacherA.setAge(22);
//具体对象的行为:马冬梅老师教授的课程是生物
teacherA.getClass(teacherA.getName(), "生物");
}``}
ok,通过以上示例,希望大家对于java的类和对象有了一个初步的概念和了解。
那么,为什么这种所谓的面向对象的编程理念会得到大家的接纳和推崇呢?
因为面向对象程序设计有以下优点:
1. 可重用:它是面向对象软件开发的核心思路,提高了开发效率。面向对象程序设计的抽象、继承、封装和多态四大特点都围绕这个核心。
2. 可扩展:它使面向对象设计脱离了基于模块的设计,便于软件的修改。
接下来就针对Java的继承、封装、多态和泛型 4 个特性进行讲解,来了解一下它们是如何实现代码重用和扩展的。
1.继承
如同现实生活中的子女继承父母的遗产一样,在java中继承指的是子类继承父类的属性和方法。见以下实例:
大家有没有发现语文老师类和数学老师类里的属性和方法大部分是相同的,以上说到java面向对象编程的优点是可重用性和可扩展性,如何通过继承来实现重用和扩展呢?
那就是通过再提炼一个上层父类–老师类来实现,语文老师类和数学老师类再作为子类对其继承使用。
如下:
采用这种向上抽象方式,是为了将多个类的通用属性和方法提取出来,放在它们的父类中,避免同样的代码写多份(即为了实现复用),在子类中只需要定义自己独有的属性和方法,以继承的方式在父类中获取通用属性和方法即可。
//继承代码结构public class Chinese extends Teacher{` `//定义自己独有的属性:工作内容` `Stringcontent;` ` //定义自己独有的方法` `publicvoid writeModels(String name, string content) {` `System.out.println(name + "老师主要工作内容是"+ content);` `}
}
特别说明:继承只能是单继承,即一个子类只能继承一个父类。
2.封装
封装的目的在于保护信息。
Java 提供了私有和公有的访问模式,类的公有接口代表外部的用户应该知道或可以知道的所有信息,私有的方法数据只能通过该类的成员代码来访问,这就可以确保不会发生不希望发生的事情。
封装主要优点如下:
那么,怎么理解封装实现了复用和扩展呢?
读者可以理解为所谓封装其实只是将属性和功能封装成类,并对类里的成员定义了不同的访问权限,最终还是通过与继承机制的结合实现的代码复用和扩展。
3.多态
所谓多态,就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用的到底是哪个类中实现的方法,必须在由程序运行期间才能决定。即不修改程序代码就可以让程序有多个运行状态可以选择,这就是多态性。
上文是根据为啥这个特性叫做多态性的角度给大家解释了一下,如果从实际运用中最终看到的实际效果这个方面来总结,可以理解为,多态是同一个行为具有多个不同表现形式或形态的能力。
举个形象的例子:
现实中,比如我们按下 F1 键这个动作:
如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;如果当前在 Word 下弹出的就是 Word 帮助;
在 Windows 下弹出的就是 Windows 帮助和支持。
同一个事件发生在不同的对象上会产生不同的结果,可见,多态实现了很好的扩展性。
4.泛型
泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。
public class GenericTest{` `// 泛型方法 printArray
publicstatic < E > void printArray( E[] inputArray )
{
// 输出数组元素 for( E element : inputArray ){
System.out.printf( "%s ", element );
}
System.out.println();
}
publicstatic void main( String args[] )
{
// 创建不同类型数组: Integer, Double 和 Character
Integer[] intArray = { 1, 2, 3, 4, 5 };
Double[]doubleArray = { 1.1, 2.2, 3.3, 4.4 };
Character[] c