Java基础知识7

来源:互联网 发布:微商晒钱视频制作软件 编辑:程序博客网 时间:2024/05/19 02:19

1.继承:

(1)将不同类中的共性描述提取出来,单独进行描述,只要让各类与单独描述的这个类有关系即可。class Xxx extends Yyy

(2)提高了代码的复用性。

(3)让类与类之间产生了关系,有了这个关系,才有了多态的特性。

(4)不要为了获取其他类的功能,简化代码而继承,必须是类与类之间有所属关系才可以继承。所属关系:is a。猫、豹、虎——>猫科

(5)java中只支持单继承,不支持多继承。(只继承一个类)因为多继承容易带来安全隐患。当多个父类中定义了相同的功能,但功能内容不同时,

        子类对象不确定要运行哪一个。但是java保留了这种机制,并用另一种形式来完成表示,多实现。java还支持多层继承。B继承A,C再继承B。

2.继承体系的使用:

(1)先查阅体系父类的描述,因为父类中定义的是该体系的共性功能,通过了解共性功能,就可以知道该体系的基本功能,那么这个体系已经基本可以使用了。

(2)在具体调用时,要创建最子类的对象。

原因:a,因为父类有可能不能创建对象。b,创建子类对象可以使用更多的功能,包括基本的,也包括特有的。

简单的说就是:查阅父类功能,创建子类对象使用功能。

3.super:超类,父类。super.成员,调用父类的成员。

如果子类中出现与父类同名的非私有的成员变量,子类要访问本类中的变量,用this(可省略),子类要访问父类中的变量用super。

4.子父类中的函数:

当子类出现和父类一模一样的函数时,当子类对象调用该函数,会运行子类函数的内容,如同父类的函数被覆盖一样。

这种情况是函数的另一个特性:重写(覆盖)

当子类继承父类,沿袭了父类的功能到子类中,子类虽然具备了该功能,但是功能的内容却和父类不一致,这时,没有必要定义新功能,而是使用覆盖,

保留父类功能的定义,并重写功能内容。

注意:子类覆盖父类,必须保证子类权限大于或等于父类权限,否则编译失败。静态只能覆盖静态。当父类方法被private修饰时,则不存在覆盖。

注意:

重载:只看同名函数的参数列表。

重写:子父类方法要一模一样。(权限可以不一样,子类大于或等于父类权限)

子父类中构造函数不能覆盖,不同名。

this();调用本类构造函数

super();调用父类构造函数

子类的构造函数默认第一行有一个隐式的语句super();

super语句一定定义在子类构造函数的第一行。(初始化动作要先执行)

子类一定要访问父类中的构造函数,因为父类中的数据子类可以直接获取,所以子类对象在建立的时候,需要先查看父类是如何对这些数据进行初始化的。

如果要访问父类中指定的构造函数,可以通过手动定义super语句的方式来指定。

结论:子类的所有构造函数,默认都会访问父类中空参数的构造函数,因为子类每一构造函数的第一行都有一句隐式super();

当父类中没有空参数的构造函数时,子类必须手动通过super语句形式来访问父类中的构造函数。

当然,子类的构造函数的第一行也可以指定this语句来访问本类中的构造函数,子类中至少会有一个构造函数会访问父类中的构造函数。

5.final关键字:最终,作为一个修饰符。

(1)可以修饰类,函数,变量。

(2)被final修饰的类不能被继承。

(3)被final修饰的方法不能被覆盖。

(4)被final修饰的变量是一个常量。

当在描述事物时,一些数据的出现是固定的,这时为了增强阅读性,都给这些值起一个名字,方便阅读,而这个值不需要改变,所以加上final修饰。

(5)内部类定义在类中的局部位置上时,要访问该局部的局部变量时,该局部变量必须变final修饰。

6.抽象函数

当多个类中出现相同功能,但功能主体不同,这时可以进行向上抽取,只抽取功能定义,不抽取功能主体。用abstract修饰该函数。

abstract void Xxx();抽象方法必须定义在抽象类中。

7.抽象类的特点:

(1)抽象方法一定定义在抽象类中。

(2)抽象方法和抽象类都必须被abstract关键字修饰。

(3)抽象类不可以用new创建对象,因为调用抽象方法是没有意义的。

(4)抽象类中的方法要被使用,必须由子类复写其所有抽象方法后,建立子类对象调用。如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。

抽象类(成员函数不一定是抽象的)和一般类没有太大区别,该如何描述事物就如何描述事物,只不过,该事物出现了一些看不懂的东西。

这些不确定的部分,也是该事物的功能,需要明确出来,但是无法定义主体,通过抽象方法来表示。

抽象类比一般类多了抽象函数,抽象类不可以实例化。抽象类可以不定义抽象方法,这样做仅仅是不让该类建立对象。

8.接口:Interface定义接口,class定义类

初期理解,可以认为是一个特殊的抽象类,当抽象类的方法都是抽象的,那么该类可以通过接口的形式来表示。

9.接口定义时格式特点:

(1)接口常见定义:常量,抽象方法

(2)接口中成员都要固定修饰符。常量:public static final 方法:public abstract

接口:不可以创建对象,因为有抽象方法。需要被子类实现,子类对接口中的抽象方法都覆盖后,子类才可以实例化,否则子类是一个抽象类。

接口可以被类多实现,一个类可以实现多个接口。一个类在继承一个类的同时还可以实现多个接口。接口可以继承接口,接口之间存在多继承,因为没有方法体。

10.接口的特点:

(1)接口是对外暴露的规则。

(2)接口是程序的功能扩展。

(3)接口可以用来多实现。

(4)降低耦合性,依赖性降低。

(5)类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口。

(6)接口与接口可以有继承关系。

11.模板方法设计模式:

在定义功能时,功能的一部分是确定的,但是有一部分是不确定的,而确定的部分在使用不确定的部分,那么这时就将不确定的部分暴露出去,由该类的子类去完成。

package myclass;
abstract class GetTime
{
 public final void getTime()
 {
  long start = System.currentTimeMillis();
  runcode();
  long end = System.currentTimeMillis();
  System.out.println("Millis:"+(end-start));
 }
 abstract void runcode();
}
class GetPrintTime extends GetTime
{
 void runcode()
 {
  int sum = 0;
  for(int i=0; i<=100; i++)
  {
   sum += i;
   System.out.println("i="+i+",sum="+sum);
  }
 }
}
class Demo
{
 public static void main(String[] args)
 {
  GetPrintTime gt = new GetPrintTime();
  gt.getTime();
 }
}


0 0
原创粉丝点击