首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java面向对象,需要知道和学习的知识点

免费java学习地区关注本文评论

抽象类

定义

包含抽象方法的类称为抽象类

那我们说一下抽象方法

一种特殊的方法

它只有声明没有具体的实现

抽象方法的声明格式为:

abstract void methodName();

抽象方法

必须用 abstract 关键字进行修饰

如果一个类含有抽象方法

则称这个类为抽象类

抽象类

必须在类前用 abstract 关键字修饰

因为抽象类中含有无具体实现的方法

所以不能用抽象类创建对象

要你何用

娜姐在之前的就有说过

类是抽象的概念!

把具体的对象身上

拥有的属性和方法抽取出来形成了类

这就是普通的类

可以用来 new 对象

那么抽象类就是拥有抽象方法的类

这个抽象方法就是把具体实现的方法提取出来的

重点

知识点来了

我们现在拥有三个类

Dog(狗)

Bird(鸟)

Fish(鱼)

这三种都是动物对不对!

我们现在创建了一个动物类

那很显然动物都有 move(移动)方法

但是我们不能具体的规定说

会飞的

(或者会跑,会游泳的)

才是动物

这个时候抽象方法就有用了

我知道动物会移动

具体怎么实现移动的方法

看你是什么物种

你自己去实现

这就是抽象类的使用了

(伙伴有时间可以看一下生物中关于物种划分的知识,我觉得很有利于我们理解像继承,抽象类的概念)

抽象类和普通类的主要区别

抽象方法必须为 public 或 protected

(因为 private ,不能被子类继承,子类便无法实现该方法)

缺省情况下默认为 public

抽象类不能用来创建对象

如果一个类继承于一个抽象类

则子类必须实现父类的抽象方法

如果子类没有实现父类的抽象方法

必须将子类也定义为为 abstract 类

其他方面抽象类和普通的类并没有区别

接口

接口语法:

修饰符 interface 接口名 {}

接口也是引用类型,可以等同看作一个类

1.接口中只能出现常量 ,抽象方法。

2.接口其实是一个特殊的抽象类,特殊在接口是完全抽象的。

3.接口中没有构造方法,不能被实例化。

4.类是单继承,但是接口和接口之间可以多继承。

5.接口是多实现,一个类可以实现多个接口(这里的实现可以等同看作"继承”)。

6.实现的关键字:implements

7.一个非抽象类实现一个接口,则必须将接口中所有的方法实现。

多态

java中的多态

表现形式:

1.父类的引用指向子类的对象

2.创建子类对象时,调用的方法为子类重写或继承的方法

有啥用?

代码的扩展能力增强

编程不要面向对象面向具体编程,要面向父类面向抽象编程,代码可扩展性才好

3.多态

概念:对象的多种形态

1.引用多态

父类的引用可以指向本类对象

父类的引用可以指向子类的对象

2.方法多态

创建本类对象时,调用的方法为本类方法

创建子类对象时,调用的方法为子类重写或继承的方法

包和import

现在还有在用记事本练习写代码的伙伴吗?

说实话

娜姐当初就用了记事本

写了 helloWord 之后

就放弃了记事本。

虽然师傅和我说

“用记事本写代码可以锻炼能力”

但是

要是用记事本写下去的话

估计娜姐我就放弃编程了

果断放弃

转用IDE(集成开发环境)

这边就不推荐了

总之适合的就是最好的

娜姐这边用 MyEclipse 举例

首先新建项目

确定了项目名

(见名知意)

然后建包取包名

一般是公司网址倒写

像百度的项目包名就可以这么写

(x表示这个包是做什么的)

然后就可以在包中新建文件编写代码了

说白了包就是放 Java 文件的文件夹

我们写代码的时候,

会用到许多别人写好的方法!

在使用这些方法的时候。

需要导包

这个时候就需要我们的关键字 import 了

那这张图看的够明白了吧!

这是一个简单的求 a+b 两个数的和的代码

我们用到了一个叫做 Scanner 的方法

我们是没有写这个代码的

直接用 import 导入 java.util.Scanner 包

就可以使用这个方法了

注:

在使用 import 关键字时,可以指定类的完整描述

如果为了使用包中更多的类,

可以在使用 import 关键字指定时在包指定后加上*,

这表示可以在程序中使用包中的所有类。

嗯 这样解释够清楚了吧!

我说明白了吗

内部类

1.内部类概序

将一个类定义在另一个类里面,对里面那个类就称为内部类(内置类,嵌套类)

访问特点:

内部类是外部类的一个成员,因此内部类可以自由的访问外部类的成员,包括私有成员

而外部类要访问内部类中的成员必须要建立内部类的对象。

2.成员内部类

1)成员内部类可以等同看作成员变量(最重要)

位置:外部类类体中,方法体之外

2)可以用控制访问权限的修饰符修饰

3)成员内部类不能拥有静态声明

4)成员内部类可以访问外部类的所有数据

5)成员内部类如何创建对象

外部类 外部类对象 = new 外部类名();

外部类名.内部类名 内部类对象 = 外部类对象.new 内部类名();

3. 局部内部类

1)局部内部类可以等同看作局部变量

2)局部内部类不能用控制访问权限修饰符修饰

3)局部内部类不能拥有静态声明

4)重点:局部内部类访问局部变量的时候,局部变量必须是final修饰的

4.匿名内部类

就是内部类的一种简化写法,可以调用其中的方法等等,但是无法有实例 化对象。并且匿名内部类必须是继承或者实现一个外部类或者接口。

由于匿名内部类没有名称,所以类体中不能定义构造方法,由于不知道类名也不能使用关键字来创建该类的实例!

5.静态内部类

1)静态内部类可以看作静态变量

2)静态内部类可以被控制访问权限修饰符修饰

3)静态内部类可以声明静态成员,也可以声明非静态成员

4)静态内部类可以直接访问外部类的静态数据,但是不能直接访问成员数据

5)静态内部类如何产生对象

内部类的作用:

(1).内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类。

(2).内部类成员可以直接访问外部类的私有数据,因为内部类被当成其外部类成员,同一个类的成员之间可以互相访问。但外部类不能访问内部类的实现细节。

(3).匿名内部类适用于创建那些仅需要一次使用的类。

(4).内部类比外部类可以多使用三个修饰符:private、protected、static——外部类不可以使用这三个修饰符。

(5).非静态内部类不能拥有静态成员。

免费java学习地区关注本文评论

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180224A0BUI500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券