day54(5..4)

来源:互联网 发布:网络兼职写手 编辑:程序博客网 时间:2024/06/11 11:50

(7)类名和方法名要能够体现它们的职责:与变量应该有一个能够反映其含义的名字一样,类也应该如此。命名类名的良好习惯是采用一个名词(Order),前面有形容词修饰的名词(rucshorder)或动词名词(有-ing后缀)修饰名词,对于方法来说,习惯是访问器方法用小[写get开关(getSalary),更改器的方法用小写的set开关(setSalary)

面对向对象的另外一个基本概念,继承(inheritance),继承已存在的类就是复用(继承)这此些类的方法和域。还阐述了。反射,反射是指在程序运行期间发现更多的类及期属性的能力。

继承一般在两个类相同部分又有不同的部分时可以用到。关键字用extends表示。Java关键字替代了c++中的冒号,在java中,所有的继承都是公有继承,而没有C++中私有的继承和私有继承。关键字extends表明正在构造的新类派生于一个已存在的类,已存在的类被称为超类,新类被称为子类,派生类,孩子类。超类和子类是程序员最常用的两个术语。但并不是因为它位于子类之上,或者拥有比子类更多的功能,恰恰相反,子类比超过类拥有更多的功能。子类可以从超类中继承到方法,域。设计类的时候,应该将通用的方法旋转在超类中,而将具有特殊用途的方法旋转在子类中,这种将通用的功能放到超类的做法,在面向对象中十分普遍。需要提供一个方法来覆盖超类中的这个方法,覆盖使用到的继承子类继承到超类时有些方法不想使用的时候,如getSalary,可以这样一段程序达到目的,public double getSalary()

{

DoublebaseSAlary=super.getSalary();

ReturnbaseSalary+bonus;

}

如果我们希望做到调用超类中的getSalary方法,而不是当前类的方法,可以使用特定的关键字,super来解决问题。Super.getSalr()

Super的作用指明调用超类的方法,而不是当前类。Super不是一个对象的引用,不能将super赋给另一个对象变量,它只是一个指示编译器类的方法特有关键字。在java中使用关键字,super调用超类的方法,而在C++中则采用超类,名加上::操作符的形式。

如:public Manager(String n,doubles,int year,int month,int day){

Super(n,s,year,month,day);//super这里的意思是调用超类的n,s,year,month,day

Bonus=0;

}

我们可以通过super实现对超类构造器的调用,使用super调用构造器的语句必须是子类构造器的第一条语句,如果子类的构造器没有显式地调用超类的构造器,则自动地调用超类的默认(没有参数)的构造器,如果超类没有不带参数的构造器,并且在子类的构造器中又没有显式地调用超类的其他构造器,则java编译器将报告错误。

关键字this有两个用途:一是引用隐匿参数,二是调用该类其他的构造器,super关键字的两个用途,二是调用超类的方法,二是调用超类的构造器。调用构造器的语句只能作为另一个构造器的第一条语句出现。

一个变量可以引用多个实际类型的现象称为多态,在运行时能够自动地选择调用的适当的现象称为动态绑定。动态绑定是默认的处理方式,如果不希望一个方法具有虚拟特征,可以将它标记为final。

由一个公共超类派生出来的所有类的集合被称为继承层次,在继承层次中从某个特定的到其祖先 的路径被称为该类的继承链。一个祖衔类可以拥有多个子孙类继承链,java不支持多继承,有一个简单的规则,用到判断是不是设计为继承关系,is-a规则的另一种表述是置换法则,它表明程序中出现超类的对象的任何地方都可以子类对象置换。在java程序设计语言中,对象是多态的,动态绑定,编译器查看对象的声明类型和方法名,要注意的是:有可能存在多个名字为f,但参数类型不一样的方法。编译器将查看调用方法时提供的参数类型,如果在所有名为f的方法中存在一个其参数类型与提供的参数完全匹配,那么就调用这个方法。这个过程称为重载解析。方法的名字和参数列表被称为方法的签名。那么编译器将可以准确地知道应该调用哪个方法,我们将这种调用方式称为静态绑定,调用哪个方法将依赖于隐式参数的实际类型,并且在运行时动态绑定。当程序运行时,并且采用动态绑定调用方法时,虚拟机一定调用与X所引用对象的实际类型最合适的那个类的方法。每次调用方法都要进行搜索,虚拟机预先为每一个类创建了一个方法表,其中列出了,所有方法的签名,和实际调用的方法。找与调用(Sting)相匹配的方法,编译器将对隐式参数超类的方法表进行了搜索。在覆盖一个方法时,子类方法不能低于超类方法的可见性,特别是,如果超过类方法是public ,那么子类方法一定要声明为public 。

不允许扩展的类被称为final类,如果在定义类的时候使用了final修饰符就表明了这个类是final类,。类中的方法也可以被声明为final类,如果这样做,子类就不能覆盖方法。对于final域来说,构造对象之后就不允许改变它们的值了,如果将一个类声明为final,只有其中一个方法自动地成为final,而不包括域

0 0
原创粉丝点击