天天开心^_^

类2

20 08月
作者:popsky|分类:JAVA学习

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>接口没有构造方法,抽象类可以有构造方法。






































浏览37 评论0
返回
目录
返回
首页
Android Killer反编译失败:No resource identifier found for attribute 问题解决方法

发表评论