类2
1:extends关键字
在JAVA中,让一个类继承另一个类需要使用extends关键字,语法如下:
Child extends Parents
子类Child类在继承了父类Parents类的同时,也继承了父类Parents类中的属性和方法。
注意:JAVA仅支持单继承,即一个类只可以有一个父类,下面的代码是错误的
Child extends Parents1,Parents2{ //错误的继承语法
}
2:类方法重写
当重写父类方法时,修改方法的修饰权限只能从小的范围到大的范围改变,例如,父类中的方法修饰权限为protected,继承后的子类的修饰权限只能修改为public,而不能修改为private.
例:
class Computer2{ void showPicture(){ System.out.println("鼠标点击"); } } public class Pad2 extends Computer2{ void showPicture(){ //重写父类方法 System.out.println("手指点击触摸屏"); } public static void main(String[] args){ Computer2 pc = new Computer2(); System.out.print("PC打开图片:"); pc.showPicTure(); Pad2 ipad = new Pads(); System.out.print("ipad打开图片:"); ipad.showPicture(); } }
3:super关键字
如果子类重写了父类的方法,就再也无法调用到父类的方法吗?如果想在子类的方法中实现父类原有的方法,可以通过super关键字,super关键字代表父类对象,super关键字的使用方法如下:
super.property; //调用父类的属性
super.method();//调用父类的方法
4:Object类
在JAVA中,所有的类都直接或间接继承了java.lang.Object类。Object类是比较特殊的类,它是所有类的父类,是JAVA类层中的最高层类。
由于所有类都是Object子类,所以在定义类时,省略了 extends Object语句。
以下是关于Object类中的几个重要方法介绍
1>getClass()方法
getClass()方法返回某个对象执行时的Class实例,然后通过Class实例调用getName()方法获取类的名称。语法如下:
getClass().getName();
2>toString()方法
toString()方法会返回某个对象的字符串表示形式。当打印某个类对象时,将自动调用重写的toString()方法。
3>equals()方法
Object类中的equals()方法比较的是两个对象的引用地址是否相等。
5:方法重载
方法重载就是在同一个类中允许同事存在多个同名方法,只要这些方法的参数个数或类型不同即可。
public class OverLoadTest{ public static int add(int a,int b){ return a + b; } public static double add(double a,double b){ return a + b; } }
6:抽象类和抽象方法(abstract)
使用abstract关键字定义的类别称为抽象类,使用abstract关键字定义的方法被称为抽象方法。
定义抽象类:
[权限修饰符] abstract class 类名 {
类体
}
定义抽象方法:
[权限修饰符] abstract 方法返回值类型 方法名(参数列表);
注意:抽象方法本身没有任何意义,除非被重写,而继承这个抽象方法的抽象类必须被继承。实际上,抽象类除了被继承之外没有任何意义。
用去商场买衣服举例:
public abstract class Market{ public String name; //商场名称 public String goods; //商品名称 public abstract void shop(); //抽象方法,用来输出信息 } public class TaoBaoMarket extends Market{ public void shop(){ System.out.println(name + "网购"+ goods); } } public class SuperShopMarket extends Market{ public void shop(){ System.out.println(name + "实体店购买" + goods); } } public class GoShopping{ public static void main(String[] args){ Market market; market = new SuperShopMarket(); market.name ="沃尔玛"; market.goods = "七匹狼西服"; market.shop(); market = new TaoBaoMarket(); market.name = "淘宝"; market.goods = "裙子"; market.shop(); } }
//使用场景:抽象类一般使用在多人团队开发中,由架构师开发最底层抽象类。
7:接口的声明及实现
接口是抽象类的延伸,可以将它看做是纯粹的抽象类,接口中的所有方法都没有方法体。
接口使用interface关键字进行定义,其语法如下:
//修饰符:可选,用于指定接口的访问权限,可选值为public。如果省略则使用默认的访问权限。
//接口名:必选参数,用于指定接口的名称,接口名必须是合法的JAVA标识符。一般情况下,首字母大写。
//extends:父接口名列表:可选参数,用于指定要定义的接口集成于哪个父接口。当使用extends关键字时,父接口名为必选参数。
//方法:接口中的方法都是抽象方法,没有方法体。
[修饰符] interface 接口名 [extends 父接口名列表]{
[public][static][final] 常量;
[public][abstract] 方法;
}
区分抽象类与接口
抽象类和接口都包含可以由子类继承实现的成员,但抽象类是对根源的抽象,而接口是对动作的抽象,抽象类和接口的区别主要有以下几点:
1>子类只能继承一个抽象类,但可以实现任意多个接口。
2>接口中的方法都是抽象方法,抽象类可以有非抽象方法。
3>抽象类中的成员变量可以是各种类型,接口中的成员变量只能是静态常量。
4>抽象类中可以有静态方法和静态代码块等,接口中不可以。
5>接口没有构造方法,抽象类可以有构造方法。
目录 返回
首页