面向对象

对象的概念

  • 用来描述客观事物的一个实体,有一组属性和方法构成。
  • oo面相对象 ooa面向对象设计 oop面向对象编程
  • 在一个java文件中,可以有多个class声明的类,但是只有一个带有public修饰的类,而这个类的名字必须 与文件名相同
  • 在一个类中,java给提供了一个默认的空的构造方法,但是如果你手动重写构造时,重写的是有参构造, 则无法使用无参构造,解决办法,再重写的有参构造前再重写一个无参构造
  • 对象名存在在栈里面,开辟的空间在堆里面,各种值存在在堆里面
  • 方法之间允许相互调用,不能嵌套定义方法

封装

  • 将类中的属性设置成private访问权限,然后再设置方法对其进行设置和获取,即设置Set()和Get()方法
  • 封装可以使数据更加保密,安全性更高,不会被随意更改

继承

  • 继承初始化后的顺序:父类属性》》父类构造》》》子类属性》》》子类构造
    数值的返回:子类的构造》》》子类属性》》》父类构造》》》父类属性
  • 方法重写:在子类和父类的继承中,保证子类和父类在同一个包下,子类重写父类的方法,必须与父类的方法名、 返回值、参数列表一致,私有方法和属性不能参与继承,所以无法重写
  • 重载:在同一个类中,要满足方法名相同,但是参数列表不同的多个方法称之为重载

封装类

  • 封装类包括:private get、set方法 toString方法 equals方法和hascode方法
  • 对象中的toString()方法,重写该方法,用于打印对象中的各种信息

static关键字

  • 不能使用super和this关键字
  • 静态变量的值是可以改变的
  • 类名.属性名 调用静态属性
  • 用类名.方法名()调用静态方法
  • 静态导包
    静态导包只有这两个包可以,其他的包都不行
    import static java.lang.Math.*;//静态导包
    import static java.lang.System.*;

final关键字

  • final修饰的类,不能被继承,但是可以继承其他的类
  • final修饰的方法,不能被重写,但是可以被子类中super()调用
  • final修饰的属性或变量为最终值,不能被修改

注意

  • 构造方法不能被继承,因此无法重写,但是构造方法可以被重载。(**************************remember me)

抽象类

  • 抽象类:类由abstract定义,表示抽象类,抽象类是限制实例化的。
  • 在抽象类中,可以有普通方法,也可以定义抽象方法(抽象方法没有方法体,且只能位于抽象类中)。
  • 抽象类必须由子类来继承,并重写抽象类中的抽象方法。
  • 如果在抽象类中定义的是普通方法,则在子类中,想要使用的时候手动重写
  • 抽象类中可以定义变量

接口 interface

接口特性

  • 接口不可以被实例化
  • 实现类必须实现接口的所有的方法
  • 实现类可以实现多个接口
  • 接口中的变量都是静态常量
  • 实现接口的关键字:implements
  • 接口是一种约定、能力(体现在接口的方法上,只关心有何能力,不关心实现细节)

注意

  • 抽象类和接口的区别
  • 抽象类中可以有抽象方法,也可以有普通方法,可以有私有方法或私有变量的,实现抽象类可以有选择地重写需要用到的方法,类只有单继承
  • 接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,接口可以实现多重继承
  • 重写和重载的区别
  • (*********************remember me)

异常处理

  • .Java 中的异常Erro Exception
  • 运行时异常,不需要捕获处理
  • 读取文件:java中提供了一个类去读取文件,文件的类是File,文件流的类FileInputStream和FileOutputStream
  • 异常处理的两种解决办法:
    • throws Exception(将异常向上抛出交给上一级处理)
    • try-catch(捕获异常进行处理)
  • java异常处理的五个关键字:try catch finally throws throw(抛出自定义异常)
  • Exception分为运行时异常(比如1/0,空指针异常) 非运行时异常(文件不存在)

异常分类图

面向对象_第1张图片

自定义异常

  • 定义的异常必须要继承Exception 调用父类构造器
  • 自定义运行时异常 必须继承RunTimeException

异常的使用规则

  • 不过度使用异常
  • 不适用庞大的try块
  • 不要忽略捕获到的异常

    throw和throws的区别

多态

概念

  • 父类引用或接口引用指向子类对象,
  • instanceof的使用,判断某一个对象是否是这个类的实例

内部类

  • Book book=person.new Book(); //book即为person的内部类
  • 局部内部类:位于方法的内部(极少用)
  • 匿名内部类:代表创建了一个类,该类继承于父类,该类只生成了一个对象,此时使用匿名内部类,典型代表button.setonclicklistener(new Listener()
    5.代码块:用于初始化不同的东西。 静态代码块 构建代码块

对象初始化顺序

                            1初始化父类的静态属性
                            2初始化父类的静态代码快
                            3初始化子类的静态属性
                            4初始化子类的静态代码快
                            5初始化父类的属性
                            6初始化父类的构建代码块
                            7初始化父类的构造器
                            8初始化子类的属性
                            9初始化子类的构建代码块
                           10初始化子类的构造器
  • this关键字:在方法中使用表示调用该方法的对象,而在构造器中,表示该构造器将要创建的对象

常用工具类

Math类

Math.ceil();进一方法
Math.floor()舍一方法
Math.round()四舍五入

Date类

Date date=new Date();
System.out.println(date);
System.out.println(date.getYear());
System.out.println(date.getMonth());
System.out.println(date.getTime());

SimpleDateFormat类

SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
String s=sdf.format(date);//将date的时间转换为上述格式
System.out.println(s);

calendar类

SimpleDateFormat sdf1=new SimpleDateFormat("yyyy年MM月dd日");
String str="2012年12月18日";//字符串格式必须与上面相同
Date d=sdf1.parse(str);//将字符串转换为date实力对象
Calendar c=Calendar.getInstance();//获得Calendar对象实例
c.setTime(d);//将Calendar对象设置为刚才的时间
System.out.println(c.get(Calendar.MONTH));
Calendar calendar=Calendar.getInstance();
int year=calendar.get(Calendar.YEAR);
int month=calendar.get(Calendar.MONTH);
int day=calendar.get(Calendar.DAY_OF_MONTH);
int hour=calendar.get(Calendar.HOUR_OF_DAY);
int minute=calendar.get(Calendar.MINUTE);
int second=calendar.get(Calendar.SECOND);
System.out.println(year+"年"+month+"月"+day+"日 "+hour+":"+minute+":"+second);
calendar.add(Calendar.DAY_OF_MONTH, 10);//将时间加十天
int dayOfWeek=calendar.get(Calendar.DAY_OF_WEEK);
System.out.println(dayOfWeek);

你可能感兴趣的:(java)