黑马程序员--第四天(面向对象)

时间:2021-07-17 00:27:44

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

一、单例设计模式

设计模式:解决某一类问题最行之有效的方法。

单例设计模式是解决一个类在内存中只存在一个对象的这种情况。

想要保证对象唯一:1.禁止其它程序建立该类对象。

2.为了让其它程序可以访问该类对象,在本类中自定义一个对象。

3.对外提供访问方式。

代码实现:

1.将构造函数私有化(其它程序就不能创建对象了)。

2.在本类中创建对象。

3.提供一个方法可以获取到该对象。

饿汉式

class Single
{
 private Single(){};
 private static Single s=new Single;
 public static Single getInstance()
 {
  return s;
 }
}
class 
{
 public static void main(String[] args)
 {
  Single ss=Single.getInstance();
 }
}
对于事物如何描述的还是如何描述。

当需要保证对象唯一时就加上以上3步。

懒汉式

class Single
{
private Single(){};
private static Single s=null;
public static Single getInstance()
{
  if(s==null)

      s=new single();

     return s;

}

区别懒汉式延时加载。

二、继承

1.提高代码的复用;类与类之间产生了关系,有了这种关系才有了多态。

2.java只支持单继承不支持多继承,多继承容易带来安全隐患。

java支持多继承,也就是一个继承体系。

如何使用继承体系:

查阅父类的描述:父类中定义了该体系*性的功能。

具体调用时要创建最子类的对象。因为可能父类不能创建对象,还有 子类对象可以使用更多的功能。

函数另一个特性--函数的覆盖(重写):当子类出现和父类一样的函数时,当子类对象调用该函数时,会运行子类函数的内容,父类的函数被覆盖。

重写与重载:

重载:只看参数列表。

重写:子父类函数一样。

结论:子类的所有构造函数,默认的都会访问父类中空参数的构造函数。

因为子类每一个构造函数内的第一行都有一句隐式super();

当父类中没有空参数的构造函数时,子类必须手动通过super或者this语句形式指定要访问的构造函数

3.final关键字

   被final修饰的类不可以被继承。为了避免被继承,被子类复写功能。

  被final修饰的变量是一个常量只能赋值一次。

4.抽象类、抽象方法

特点:抽象方法一定在抽象类中,都必须被abstract修饰。抽象类不可以创建对象,因为调用抽象方法没意义。

抽象类中的方法要被使用,要由子类复写所有的抽象方法后,创建子类使用。如果子类只复写了部分抽象方法,那么该子类还是抽象类。

/*
需求:获取一段程序运行的时间。
原理:获取程序开始和结束的时间相减即可。
获取时间:System.currentTimeMillis();
*/
class GetTime
{
 public void getTime()
 {
  long start =System.currentTimeMillis();
  for (int x=0;x<1000 ;x++ )
  {
   System.out.print(x);
  }


  long end =System.currentTimeMillis();
  System.out.println("毫秒"+(end-start));


 }
}

class  TempleDemo
{
 public static void main(String[] args)
 {
  GetTime gt=new GetTime();
  gt.getTime();
 }
}

 

5.接口

 接口中的方法全都是抽象方法,接口可以被类多实现,java不支持多继承但支持多实现。

接口的特点:接口是对外暴露的规则

接口是程序的功能扩展

类可以在继承一个类的同时实现多个接口。

接口与接口之间可以有继承关系。