面向对象

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 ---》就是公共访问的控制级别







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值