在Java中类与类之间的关系

1.聚合关系 : 两个类的关联程度较低,可以单独存在。

2.组合关系 : 两个的关联程度比较高。

Java中如何来表现这个关系。

一类A作为属性存在类B中。

3.依赖关系: 两个类的关联程度比较高。

一个类中定义一个方法,将另外一个类作为方法的参数。

4.关联关系: 它的写法和整体和部分的关系的的写法是样的,表达的含义比一样。

5.继承关系

面向对象的三大特征之一: 继承

想判断两个类之间是否存在继承关系?

通过判断两个类之间是否有所属关系。 is a 语句来判断

Java中如何来描述两个类的继承关系:

通过extends关键之来描述继承关系。

格式:

class A extends B{          }

类A叫类B的子类。

类B称为类A的父类(超类,基类)

继承的作用: 减少重复代码(优化代码的方式)

继承的使用注意点:

1.不要为了节省代码乱继承。 要想使用继承必须存在有继承关系。

2.java中的继承属于单继承。 一个子类只允许有一个父类。允许多重继承。

3.父类中一般是子类的公有的成员(属性和行为)。子类是允许有自己独用的行为和属性。

4.父类类私有成员是不能继承的。

5.构造方法也是不能继承的。

6.子类创建对象的时候会默认调用父类的无参构造方法。

7.父类中最好存在有无参的构造方法。

8. 如果子类中和父类中同名的成员时,默认是优先使用子类。

9. 如果子类构造方法中指定了调用父类的构造方法,那么就不会在调用父类中的无参构造方法。

super关键字

super: 用来引用父类的空间

super关键字的应用:

1.在子类中用来直接调用父类中成员变量。

2.在子类的构造方法中调用父类的构造方法。

super调用构造方法的使用注意点:

  1. 如果super用来调用父类的构造方法,那么super语句必须是子类的构造方法中的第一个语句。

super关键字和this关键字的区别:

1关键字的含义比较

1.this关键字所属的方法的调用者对象。

2.super表示父类空间的引用

2使用前提来比较

1.this关键字不需要继承也可以使用

2.super关键字必须要有继承

3调用构造方法比较

1.this关键字是调用当前类的构造方法

2.super代用父类的构造方法。

方法的重写

作用:扩展父类中的方法。

使用场景:父类中方法满足不了子类

方法重写的注意点:

1.子类中的方法要和父类中的方法同名

2.子类中的参数列表要和父类的一样

3.子类的权限修饰符要大于等于父类的权限修饰符。

4.返回值类型和父类一样,或者是父类的子类。

final修饰符

意思:最终的,不可更改的.

作用:1,可以用来修饰变量

2.可以用来修饰方法

3.可以用来修饰类

使用注意点:

1.一个变量如果被final修饰了必须要初始化

2.如果一个基本数据类型变量被final,变量就不能修改了

3.如果用final修饰一个引用数据类型变量,那么这个变量就不能再引用其他对象

4.如果final修饰方法,方法就不允许重写。

5.如果final修饰一个类,那么这个类就不允许被继承。

抽象类

抽象方法的使用场景: 有一个事物存在某种行为,但是没有具体的实现。可以通过抽象类来实现

定义抽象方法: abstract关键字

抽象方法定义格式: abstract 方法名();

抽象类的定义格式: abstract class 类名{}

abstract的使用注意事项:

1.abstract修饰的方法是一个抽象的方法,方法不允许有主体。

2.一个类中如果有抽象方法,那么这个类一定是一个抽象类。

3.一个类如果继承抽象类,那么你就必须要重写抽象类中的所有的抽象方法。

4.一个抽象类中允许抽象方法和非抽象方法共存。

5.抽象类不能创建对象。

6.抽象类中是可以定义构造方法。

7.抽象类中是可以没有抽象方法。

abstract修饰方法不能和一下关键字连用:

abstract不能和private一起修饰方法。

abstract不能和static一起修饰方法。

abstract不能和final一起来修饰方法。

抽象类和普通类的区别:

1.抽象类有abstract关键字修饰,普通类没有

2.抽象类有抽象方法,普通了没有。

3.抽象类不能创建对象,普通类可以创建对象。

接口

使用interface 关键字来表示接口。

定义接口的格式:

interface 接口名 {接口的内容}

实现接口:

implements : 表示实现

class B implements 接口名{

}

接口的使用注意点:

1.接口中定义的方法是没有主体的。接口中的方法默认都是抽象方法。

2.接口中定义的变量默认都是常量。修饰方式:public static final。

3.接口不能定义构造方法

4.接口需要用其他的类来实现。

5.如果一个普通类实现接口,那么就必须要实现接口中的所有方法。

6.如果是一个抽象类实现接口,类就不一定需要实现接口中的方法。

7.接口是支持都多实现的。一个类可以实现多个接口。

8.接口不能创建对象。

Java 面向对象的第三大特征: 多态

多态的变现形式:1.父类的类型指向子类的对象

2.接口类型指向接口类型的实现对象

1.父类的类型指向子类的对象:

示例:

Animal a = new Dog();

多态的使用注意事项:

1.要想有多态必须要有继承。

2.多态中要有方法的重写

3.子类和父类中有同名的非静态方法,默认是调用子类中的方法。

4.子类和父类中有同名的变量,默认是调用父类中的。

5.子类和父类中有同名的静态方法。默认调用父类中的方法。

总结:子类和父类中存在同名成员,默认是调用父类中的,非静态方法除外。

多态的应用:

1.在方法中用于形参进行传递。可以增强代码的可扩展性

2.在方法中用于返回值,可以返回多种类型的对象

(这个时候需要用到数据类型的转换,数据转换之前需要判断某个对象是否属于某个类型)

在引用数据类型中: 子类向父类转换叫自动类型转换。

示例  Aniaml a = new Dog();

在引用数据类型中: 父类向子类进行转换叫强制类型转换。

示例: a instanceof Mouse

Mouse m = (Mouse)a

2.接口类型的变量指向接口实现类的对象

示例:

接口 a = new 实现类();

a 就可以实现接口里面的方法

内部类

定义: 在一个类的内部存在有另外一个类。

内部类的class文件的命名: 外部类$内部类

内部类的使用场景:

一个类A中要使用到另外一个类B,类B中又要使用到类A,这个时候就需要使用到内部类。

在一个类内部类分为两种:

1 成员内部类

2.局部内部类

成员内部类

定义在内里面方法外面的类叫成员内部类。

访问内部类的方式:

方式一:

在外部类中提供一个方法来初始化内部内对象,在方法中对对象做操作。

方式二:  只有成员内部类可以使用。

在其他类中间接的创建内部类对象直接使用。

格式: 外部类.内部类  对象 = new 外部类().new 内部类();

内部类的使用注意点:

1.外部类中定义的成员可以在内部类中直接访问到

2.如果内部类中的成员和外部类的成员同名,就近原则,调用内部类中的。

3..如果内部类中的成员和外部类的成员同名,可以通过 外部类名.this.属性名 来获取到外部类的属性。

4.如果static修饰内部类 ,内部类中访问的成员需要使静态的。

局部内部类

定义在方法中的类。

访问局部内部类的方式:在外部类中提供一个方法来初始化内部内对象,在方法中对对象做操作

局部内部类的使用注意点:

  1. 内部类中想访问外部类中 的局部变量,这个局部变量必须用final来修饰

匿名内部类

匿名内部类:就是没有名字的内部类。

匿名内部类的作用: 简化代码

匿名的内部类需要通过 继承或者接口来实现

异常

程序和代码的不正常情况,叫异常

异常类:用一个类来描述所有的异常情况叫异常类

异常体系:所有的异常类组合起来称为异常体系

Object : 所以异常和错误的超类

Throwable: 所有异常的超类

Error :错误类

Execption:异常类

继承图:

Throwable:类中最常见的三种方法

1         toString() 返回此 throwable 的简短描述 :描述的是类的完整类名+传入的异常信息。

2         getMessage()  获取传入的异常信息

3         printStackTrace()打印异常的栈信息

Error :错误 : 指的是jvm或者硬件的原因导致的错误 .无需人工处理

Execption:异常 : 指的是jvm虚拟机产生的异常

判断打印的是异常还是信息:

如果打印信息的后面是以error结尾的 ,打印出来的就死活一个错误信息。

如果打印的信息的后面是以Execption结尾的,打印出来的是异常信息。

处理异常的方式有两种:

1.捕获处理异常:

捕获处理异常的格式:

try{//可能出现异常的代码}catch(接收异常的变量){

//处理异常的操作

}

捕获异常的使用注意点:

1.如果try中的代码出现了异常,出现异常之后的代码就不会执行了。

2.一个try后面可以处理多个异常。

3.捕获异常的时候可以直接捕获一个最大的异常Execption

4.捕获的异常需要按照由小到大的顺序排列。

java第五周学习的更多相关文章

  1. 20165210 Java第五周学习总结

    20165210 Java第五周学习总结 教材学习内容 - 第七章学习总结 内部类: 内部类的外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类中的方法. 内部类的类体中不可以声明类变 ...

  2. JAVA 第五周学习总结

    20175303 2018-2019-2 <Java程序设计>第五周学习总结 教材学习内容总结 •使用关键字interface来定义一个接口,定义接口分包含接口声明和接口体. •接口体中包 ...

  3. 20165326 java第五周学习笔记

    第五周学习笔记 ch7 内部类(&外嵌类) 内部类的类体不可以声明类变量和方法 内部类如同类的变量或方法 内部类和外嵌类在编译时生成两个class文件 匿名类 某个类的一个子类没有明显的用类声 ...

  4. Java第五周学习总结

    学号 2016-2017-2 <Java程序设计>第X周学习总结 教材学习内容总结 1.接口 (1)使用关键字interface来定义一个接口,接口分为接口声明和接口体,例如 interf ...

  5. 20165221 JAVA第五周学习心得

    课本知识点 内部类与异常类 内部类:在一个类中定义另一个类 特点:外嵌类的成员在内部类仍然有效,内部类也可调用外嵌类的方法,内部类的类体不能声明类变量及类方法 非内部类不能是static类 匿名类:创 ...

  6. 2016-2017-2 20155309南皓芯java第五周学习总结

    教材内容总结 这一周学习的进度和前几周比较的话是差不多的,都是学习两章. 异常处理 1.理解异常架构 2.牚握try...catch...finally处理异常的方法 3.会用throw,throws ...

  7. 20165220 Java第五周学习总结

    教材学习内容总结 1.try—catch语句:Java用try—catch语句来处理异常.将可能出现的异常操作放在try中,当try出现异常时,此部分立刻结束运行,转向执行catch部分.一个try- ...

  8. 201521123093 java 第五周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 答:接口:1.所有的默认方法都是public abstract; 2.属性都是p ...

  9. #20175120彭宇辰 java第五周学习总结

    第六章 接口与实现 教材学习内容总结 接口-接口声名interace -接口体1.只有常量声明和抽象方法2.所有常量和方法的访问权限都为public3.常量都为static常量4.可省略pulic\s ...

随机推荐

  1. usaco1.1.1Your Ride Is Here(入门题)

    一下是我很久很久之前刷的题目...随便扔在这里啦.. Description 一个众所周知的事实,在每一慧星后面是一个不明飞行物UFO.这些不明飞行物时常来收集来自在地球上忠诚的支持者.不幸的是,他们 ...

  2. Linux环境进程间通信(五): 共享内存(下)

    linux下进程间通信的几种主要手段: 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允 ...

  3. .NET面向对象特性之“继承”

    整体简介 1.理解继承——继承关系图 2.实现继承与接口多继承 3.new. virtual.override方法 4.抽象方法和抽象类的继承 5.继承的本质 6.继承的复用性.扩展性和安全性 7.多 ...

  4. Navicat Premium 11.0.10破解补丁

    Navicat Premium 11.0.10破解补丁   Navicat Premium 是一个可多重连接的数据库管理工具,让你以单一程序同時连接到 MySQL.SQL Server.SQLite. ...

  5. RobHess的SIFT源码分析:综述

    最初的目的是想做全景图像拼接,一开始找了OpenCV中自带的全景拼接的样例,用的是Stitcher类,可以很方便的实现全景拼接,而且效果很好,但是不利于做深入研究. 使用OpenCV中自带的Stitc ...

  6. [置顶] cuzy sdk之起源

    程序员都熟知一句话, “不要重复制造轮子".应该说互联网的繁荣和普及给刚入门的软件工程师还是带来很大的好处的.尤其是github,sourceforge在国内日渐的流行. 在学习iOS和an ...

  7. java获取真实ip

    在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...

  8. java BigInteger源码学习

    转载自http://www.hollischuang.com/archives/176 在java中,有很多基本数据类型我们可以直接使用,比如用于表示浮点型的float.double,用于表示字符型的 ...

  9. [转]Ubuntu10下MySQL搭建Amoeba系列(文章索引)

    一.前言(Introduction) 使用了Amoeba有一段时间了,发现官方博客:Amoeba使用指南有很多地方都是错误的,在我实战中给到一些错误的指示,所以我想写些在搭建的实战中给大家一点指引.欢 ...

  10. 170116、centos6.4下nginx和ftp搭建图片服务器

    一.需要的组件 图片服务器两个服务: Nginx(图片访问): 1.http服务:可以使用nginx做静态资源服务器.也可以使用apache.推荐使用nginx,效率更高. 2.反向代理 实现 负载均 ...