{
System.out.println(“radius =”+ radius); }
}
class cyingbi extends Ccircle {
private int value;
public cyingbi(double r, int v) {
super(r); value = v; }
public void show() {
System.out.println(“radius =”+ radius+”,value”+value); } }
public class app9_1 {
public static void main(String args[]) {
Cyingbi Yingbi = new Cyingbi(2.0,5); Yingbi.show(); } }
4.16. 类之源——Object类
4.16.1. Object类之toString方法
? Object类中定义有public String toString()方法,其返回值是String类型,描述当 前对象的有关信息
? 在进行String与其它类型数据的的连接操作时(如: System.out. println(“info\,
将自动调用该对象类的toString()方法
? 可以根据需要在用户自定义类型中重写toString{}方法。 例如:
4.17. 对象转型
? 一个基类的引用类型变量可以“指向”其子类的对象。
? 一个基类的引用不可以访问其子类对象新增加的成员(属性和方法)
? 可以使用引用变量instanceof类名来判断该引用型变量所“指向”的对象是否属 于该类或该类的子类。
? 子类的对象可以当作基类的对象来使用称作向上转型(upcasting ),反之称为 向下转型(downcasting )。 例如:
4.18. 抽象类和接口
4.18.1. 抽象类
? 用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,
该方法叫做抽象方法。
? 含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写。 ? 抽象类不能被实例化。
? 抽象方法只需声明,而不需实现。
? 抽象类的定义格式 abstract class 类名 {
声明数据成员; //定义一般方法
返回值的数据类型 method名称 (参数1,参数2,。。。。。。) {
程序语句; }
//定义抽象方法
abstract 返回值的数据类型 method名称 (参数1,参数2,。。。); }
具体抽象类的实现 abstract class Ccircle {
private double pi=3.14; private double radius; public void show();
}
class cyingbi extends Ccircle {
private int value; public void show() {
System.out.println(“radius =”+ radius+”,value”+value); } }
public class app9_1 {
public static void main(String args[]) {
Cyingbi Yingbi = new Cyingbi(); Yingbi.show(); } }
为什么要使用抽象类呢:比如上面的Ccircle,我们是不知道其实上面来show的,这样我们就可以只定义方法,而不去实现。再遇到具体情形下再实现该抽象方法。
使用抽象类的注意事项
1、抽象类不能用来直接产生对象 2、在抽象类里不能写构造函数。
4.18.2. 接口
? ? 的; ? ? ? ?
接口可以多重实现;
接口中声明的属性默认为public static final的;也只能是public static final 接口中只能定义抽象方法,而且这些方法默认为public的、也只能是public的; 多个无关的类可以实现同一个接口。 一个类可以实现多个无关的接口。
与继承关系类似,接口与实现类之间存在多态性。
接口的定义格式 interface接口名 {
final 数据类型 成员变量=常量; //数据成员必须赋值初值 abstract 返回值的数据类型 method名称 (参数1,参数2,。。。); }
接口的具体实现 interface Ccircle {
相关推荐: