类和异常

本文介绍了Java编程中的关键概念,包括包的作用,访问修饰符(public、protected、private等)的使用,方法重写与重载,抽象类与final关键字,多态机制,接口的使用,类与类的关系,以及内部类和异常处理的详细说明,包括自定义异常的定义和抛出。
摘要由CSDN通过智能技术生成

包+访问修饰符:

      包名:

             1.www.baidu.com

                com.baidu.xxx.xx

              -域名倒置

              -详细功能划分

目的:针对资源作详细的划分。

访问修饰符: 本类 同包 子类  其他(不同包,非子类)
public(公共的)yes yes yesyes
protected(受保护的)yes yes yesno
默认 yes yes nono
private(私有的)yes no no no

重写+重载问题:

      重写:当子类继承的父类方法无法满足子类需求,重写覆盖父类的方法。

      重写:方法名,参数名,返回值与父类一致。子类访问修饰符不能严于父类。继承时重写。

      重载:方法名相同。参数列表不同。与返回值无关。与访问修饰符无关。同类中重载。

抽象类+final关键字:

 抽象方法:即没有方法体的方法。

抽象方法的定义:【访问修饰符】 abstract 返回值类型 方法名(参数)

-拥有抽象方法的类必须定义为抽象类。

-抽象类不能创建对象。

-父类为抽象类,子类必须重写抽象方法(除非子类为抽象类)。

-抽象类不一定有抽象方法,可以有实例方法,但抽象方法一定在抽象类。

抽象类的定义:【访问修饰符】 abstract class 类名{

//成员变量

//成员方法

}

目的:方法的实现没有任何价值。于是不实现方法体。构成抽象方法。

final修饰符

1.修饰方法

【访问修饰符】 final 返回值 方法名()......

-final表示此方法不能被覆盖。

2.修饰变量

【访问修饰符】 final static  数据类型 变量名=值;

-final修饰的变量不能被修改,表示常量。

-常量必须初始化,并且用static修饰。

注意:常量名称所有字母一般大写。

3.修饰类

【访问修饰符】 final class 类名{......}

-final修饰的类不能被继承。

多态

什么是多态:

同一个引用类型使用不同实例而执行的不同操作。

为什么要使用多态:

多态解决了程序的拓展性问题。

怎么实现多态:

1.继承,子类重写父类的方法。

2.父类的引用指向子类对象。

-编译时多态:编译阶段,被调用方法的对象属于哪个类则调用哪个类的方法

public void feed(Pet pet)

{pet.pet();}

-运行时多态:根据对象的引用找到堆中的实际类对象,调用该类的对象方法。

Mater mater=new Mater();

Pet dog=new Dog();

Pet cat=new Cat();

mater.eat(dog);

mater.eat(cat);

多态对象转型问题:
  1.子对象转父对象:
Pet dog=new Dog();

2.父对象转子对象:classex.....

if(pet instanceof Dog)

{

 Dog   dog = (Dog)pet;

dog.band;

}

接口:

什么是接口:

接口即是一种强制遵守的规范,如果不遵守此规范,则不能使用此接口。

为什么要使用接口:

原因:Java的继承只能实现单继承,如果要同时实现继承父类,然后再继承其他元素基因,此时java的继承无法实现。

解决方法:使用Java的接口,通过接口的多实现,间接实现java的多继承。

怎么实现接口:

1.定义接口

【访问修饰符】 interface 接口名称{   

//成员变量

//成员方法  

}

2.实现接口

public   class  子类 implement  接口{

//重写父接口的方法

}

注意细节:

1.接口的方法必须是public&abstract(默认)的方法。

或者public&static(jdk1.8后)方法

2.接口没有构造方法,所以接口不能实例化。(抽象类有构造方法,因为太抽象不能被实例化)

3.接口的成员变量必须是static&final(默认)的是常量。

4.接口的方法子类必须实现(重写)。

5.接口可以多实现。

类与类的关系

1.is。。。a继承。

Student is a  Person

2.has。。。a 拥有

Student   has    a   Phone

内部类

1.内部类对象的创建:

A.B  a=new A().newB();

2.静态内部类

A.B  a=new A.B();

3.匿名内部类  一次性  作用和存活周期很短,用完即丢。

接口(或抽象类)名称    对象名 =new  接口名(){

//方法的覆盖

}

*代码块执行问题
  代码块
     执行时机: 对象被创建之前
     作用: 对象创建之前的加载或者初始化工作

   静态代码块:
     执行时机:  类加载时
     作用: 对类在加载时做一些初始化的工作,只执行一次。
       

*异常结构和异常处理
   Throwable
       -异常(Exception):依靠程序本身可以解决的非严重性问题
            1)运行时异常(RuntimeException)
          InputMismatchException:输入类型不匹配异常
          ArithmeticException:算数异常
          NullPointerException:空指针异常
          ClassCastException:类转换异常
          ArrayIndexOutOfBoundsExceptio:数组索引下标越界
          NumberFormatException: 数字格式化异常
          
        2)检查异常(CheckException)
          ClassNotFoundException : 类无法加载异常
          IOException: IO流异常(文件的读写)
          FileNotFoundException: 文件无法加载

       -错误(Error):依靠程序本身可以无法解决的严重性问题

异常处理:

try:捕获异常,

catch:处理对应的异常。

finally:无论是否发生异常都必定会执行。通常再次释放内存的资源。例如IO流对象的释放。

注意:

1.catch可以有多个。

2.当发生对应异常时,jvm创建对应异常对象。

3.catch处理异常的顺序一定要按照从子到父。

4.异常处理语句中有return,先执行finally再执行return。

自定义异常:

1.定义异常类,继承exception类。 

2.抛出异常对象:

throw  new 异常()

注意:

       方法内部抛出异常,要么try...catch处理,要么使用throws交给其它调用对象处理。

3.定义方法的异常抛出

【访问修饰符】【其它修饰符】 返回值类型  方法名  (参数列表)  throws  异常列表

{

}

4.处理异常

try ......catch.....finally

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值