1、面向对象的三大特性
(1)封装性 (2)继承性、(3)多态性
2、类与对象
类是对某一类事物的抽象描述。
对象用于表示现实中该类事物的个体。
3、类的定义
类是对象的抽象,用于描述一组对象的特征和行为,类中可以定义成员变量与方法,
成员变量就是用于描述对象的特征,也被称为属性,成员方法用于描述对象的行为,称为方法。
4、类的封装
(1)所谓类的封装只能在她在定义一个类时,将类中的属性私有化,即使使用了private关键字来修饰,私有属性只能在他所在类中被访问。为了能够让外界访问,需要提供一些public修饰的公有的方法,其中包括用于获取属性值得get与set的方法进行处理。
5、构造方法的定义
如果同时满足下面三个条件
(1)方法名与类名相同。
(2)在方法名的面前没有返回返回值的类型的声明
(3)在方法中不能使用return语句返回一个值。
6、构造方法的重载
在一个类中,可以定义多个构造方法,主要每一个构造方法的参数类型或参数的个数不相同即可。
7、this的关键字的使用
(1)只能在构造方法中使用this调用其他的构造方法,不能在成员方法实用。
(2)在构造方法中,使用了this调用构造方法的语句必须位于第一行,且只能出现一次。
8、垃圾回收
Java虚拟机会自动回收垃圾对象所占用的内存空间。
Java 除了等待虚拟机进行回收的情况下,Java也可以通过使用System.gc(); 方法来通知Java的虚拟机立刻进行回收。里面有一个finalize()方法进行被自动进行回收。
9、static的关键字
在一个Java类中,可以使用static关键字来修饰成员变量,该变量被称为静态变量,静态变量被所有实例共享,可以使用“类名. 变量名”的形式进行访问。
注意:static关键字只能用于修饰成员变量,不能用于修饰局部变量,否则编译会报错。
静态代码块,使用一对大括号包起来,还有就是通常情况下静态代码只是被执行一次,还有就是使用静态代码块来对类的成员变量进行初始化。
10、单例模型
class Single {
//自己创建一个对象
private static single INSTANCE = new Single();
private Single (){};
private static Single getinstance(){
return INSTANCE;
}
}
(1)类的构造方法使用private 修饰声明了为私有这样就不能再类的外部使用new关键来创建对象了。
(2)在类的内部创建一个该类的实例对象,并使用静态变量instance 引用该对象,有与变量应该禁止外界直接访问,因此使用private修饰,声明为私有成员变量。
(3)为了让类的外部能够获得类的实例对象,需要定义一个静态方法,getinstance(),用于返回该类实例instance ,由于方法是静态的,外界可以通过“类名.方法名”的方式来访问。
11、如果想通过外部类去访问内部类,则需要通过外部类的对象去创建内部类的对象,创建内部类对象的具体语法格式如下:
外部类名.内部类名 变量名 = new 外部类的名(). new 内部类名();
12、需要创建内部类的
在不创建外部类对象的情况下被实例化,的格式
外部类的名.内部类名 变量名 = new 外部类名 . 内部类名();
13、类的继承
(1)在Java中,类只支持单继承,不允许多重继承,也就是说一个类只能有一个直接的父类。
(2)多个类可以继承一个父类
(3)在Java中,子类和父类是一种相对概念,也就是一个类是某一个类父类的同时,也急速另一个类的子类,就是一个类的父类继承另外的附列,c类继承b类,b类继承a,然后c类就是可以作为a类的子类。
14、重写父类的方法
需要注意的是,在子类中重写的方法需要和父类被重写的方法具有相同的方法名、参数列表,以及返回值类型。
假如父类的方法是public的时候,子类的方法就不能使用private的。
15、super的关键字的使用
主要就是利用来调用父类的成员变量,成员方法,构造方法等,
super.成员变量
(1)super.成员方法([参数1,参数2,..........])
(2)调用父类的构造方法
super([参数1,参数2.....])
需要注意的是通过super调用父类的构造方法的时候,代码必须为与这类的构造方法的第一行,并且只能是出现一次。
16、final的关键字的使用
(1)final修饰的类不能被继承。
(2)final修饰的方法不能被重写。
(3)final修饰的变量(成员变量和局部变量)是常量,只能赋值一次。
17、抽象类和接口
假如:java允许在定义方法的时候,不写方法体,不包含方法体的方法为抽象方法,抽象方法必须使用abstract关键字来修饰
abstract void shout();
因为定义了抽象方法不可以被调用,如果想调用抽象方法,则要创建一个子类,在子类中将抽象类中的抽象方法进行实现。
代码例子
package com.hanshu.text;
public class text5 {
public static void main(String[] args) {
// 异常的处理
//下面的代码定义一个try。。。。catch语句用于捕获
try {
//try在代码块中发生
int result = divide(5,0);
//在这里try代码块里面,发生了被0整除的异常,程序会跳转到而执行catch里面的代码块。
//通过调用exception对象的getmassage()方法。返回异常信息“zero”.catch代码块对异常处理后
//需要注意的是在try里面发生了异常,后面的代码是不会被执行,
System.out.println(result);
} catch (Exception e) {
// 这里主要是对异常进行处理来着
System.out.println("捕获的异常信息是:"+e.getMessage());
}finally{
System.out.println("进入了finally代码块");
//我们希望有些语句无论程序是否发生异常都要执行。所以我们需要加上这个关键词
//需要注意的是,finally中代码块,有一种情况下是不会执行的,那就是在try...catch中
//执行了system.exit(0)语句,system.exit(0)表示退出当前的Java的虚拟机。Java的虚拟机停止了
//任何代码都不能执行了。
}
System.out.println("程序继续向下执行.....");
}
//下面的方法实现两个整数相除
//下面的方法实现两个整数相除的,并使用throws的关键字声明,抛出异常
public static int divide (int x,int y) throws Exception{
//定义一个变量result 记录两个数相除的结果
int result = x/y;
//将结果返回
return result;
}
}
接下来就是解释自定义的异常情况
自己要定义构造方法,也是要定义规矩异常来,然后其他类来继承这个类
package com.hanshu.text;
public class DivideByMinusException extends Exception {
public DivideByMinusException(){
super();
}
public DivideByMinusException(String message){
super(message);
}
}
接下来就是我们进行调用我们自己定义的异常类
package com.hanshu.text;
public class text5 {
public static void main(String[] args) {
// 异常的处理
//下面的代码定义一个try。。。。catch语句用于捕获
try {
//try在代码块中发生
int result = divide(5,-3);
//在这里try代码块里面,发生了被0整除的异常,程序会跳转到而执行catch里面的代码块。
//通过调用exception对象的getmassage()方法。返回异常信息“zero”.catch代码块对异常处理后
//需要注意的是在try里面发生了异常,后面的代码是不会被执行,
System.out.println(result);
} catch (DivideByMinusException e) {
// 这里主要是对异常进行处理来着
System.out.println("捕获的异常信息是:"+e.getMessage());
}finally{
System.out.println("进入了finally代码块");
//我们希望有些语句无论程序是否发生异常都要执行。所以我们需要加上这个关键词
//需要注意的是,finally中代码块,有一种情况下是不会执行的,那就是在try...catch中
//执行了system.exit(0)语句,system.exit(0)表示退出当前的Java的虚拟机。Java的虚拟机停止了
//任何代码都不能执行了。
}
System.out.println("程序继续向下执行.....");
}
//下面的方法实现两个整数相除
//下面的方法实现两个整数相除的,并使用throws的关键字声明,抛出异常
public static int divide (int x,int y) throws DivideByMinusException{
if(y<0){
//使用throw关键字声明异常对象
throw new DivideByMinusException("被除数是负数");
}
//定义一个变量result 记录两个数相除的结果
int result = x/y;
//将结果返回
return result;
}
}
17、进行对包的认识理解
(1)package 包名.类名;
(2)import 包名.类名;
(3)有时候我们需要利用到一个包中所有的几个类的时候,我们可以利用import 包名.*;导入下面所有的包
Java.lang: 包含Java语言的核心类,如string、math、system和thread类等,使用这个包中的类无须使用import语句进行导入包名。系统会自动导入这个包下的所有类。
Java.util: 包含中大量工具类、集合类等,例如arrays,list 、set等
Java.net 包含Java网络编程相关的类和接口。
Java.io 包含了Java输入、输出有关的类与接口
java.awt 包含了构建图形界面的相关和接口。
18、访问控制
private ---》default ----》protected ----》public
private 就是类访问的级别
default 就是包访问的级别
protected 就是子类访问的级别
public ---》就是公共访问的控制级别