java基础笔记(三)

1. 类的概念:

一堆 具有共同的成员变量/属性和成员方法/功能对象集合

2.接口

1,接口的概念:

接口是功能的集合,就是方法的集合
也就是说 接口中只能定义方法,不能定义普通的成员变量
而且接口中的成员方法,必须都是抽象的
我们一般这么理解,接口是比抽象类 还有抽象一种类型

2,接口的定义

定义类用关键字:class
定义抽象类用关键字:abstract class

定义接口用关键字:interface
定义枚举用关键字:enum

	public interface 接口名字{
		//成员变量,不能定义普通的成员变量
			//成员方法:必须都是抽象
		public abstract 返回值类型 方法名();

 		}
		
 		类和接口的本质区别并不大,他们的源码都是.java文件
        编译后都是.class文件

3.各种类型之间的关系

a.类和类之间:继承,而且是单继承,一个子类 只能有一个直接父类
b.接口和接口之间:继承,但是可以多继承,一个子接口 可以有多个直接父接口
c.类和接口之间: 不叫继承(extends),叫实现(implements),可以多实现
------(实现:implements 和 继承 差不多, 实现是把接口中的抽象方法都拿过来)
d.只有 类 实现 接口

面试题:java到底支不支持多继承?
如果是类与类 不支持多继承,只支持多层继承 如果是接口和接口 支持多继承,也支持多层继承

4.接口中成员的特点

成员变量,但是必须有固定修饰符 public static final 数据类型 变量= 值
成员方法,必须是是固定修饰符 public
abstract 即 抽象方法 接口不可以创建对象(抽象类也是)
实现类 实现接口 ,那么必须重写接口中所有的抽象方法,然后才能创建对象 , 否则 这个实现类 还是一个抽象类,是不能创建对象的

5.接口和抽象类的异同

相同点:

a.都不能创建对象
b.都是作为父类/父接口
c.子类/实现类 都必须重写抽象方法,然后才能创建对象

2.不同点:

a.抽象类用关键字 abstract 接口用关键字interface
b.抽象类中可以有抽象方法,可以没有抽象方法,也可以有部分是抽象方法,部分不是抽象方法 接口中只有有方法,必须都是抽象的
c.抽象类可以定义任意成员变量 接口的成员变量必须public static final修饰
d.类和抽象类之间关系是单继承,
类和接口之间关系是多实现

思想上的区别

1.抽象类中 必须定义 整个继承体系的共性内容
2.接口中定义 整个继承体系之外的 额外的 扩展的功能

6.多态

面向对象有三大特点:封装(安全性),继承(扩展性),多态(灵活性)

多态: 是指对象的多态,一个对象 的多种状态

在java中的多态前提:

1.必须有子父类关系 (必须有继承)
2.必须有方法的重写
3.代码体现为: 父类类型 变量名 = new 子类类型();

多态在java中表现形式:

父类类型 变量名 = new 子类类型();
父类类型的变量 指向了 子类的对象

注意事项:
使用多态调用成员变量

编译时 看父类 看左边 运行时 看父类 看左边

使用多态调用成员方法

编译时 看父类 看左边 运行时 看子类 看右边

总结:
多态使用变量 编译运行都看父类
多态调用方法 编译看父类 运行看子类

多态的弊端: 多态只能调用子父类共有的方法,不能调用子类特有的方法

弊端的解决方案:

向下转型: 强制类型转换 《《 子类类型 变量名 =(子类类型)父类类型的变量;

向上转型(就是多态): 自动类型转换
子类类型 变量名 =(子类类型)父类类型的变量;
变量名.子类特有方法();
向下转型过程中 很容易出现 类型转换的异常

向下转型也有弊端: 把父类的变量 转成子类类型的时候 编译器直接编译通过

java中解决向下转型弊端的方法: 一个关键字 instanceof 运算符 作用: 判断某一个变量 不是 该类的类型
格式: boolean b = an instanceof 类名

总结:

多态的好处:
提高程序的灵活性,扩展性,复用性 因为父类的变量 可以接收任何一个子类对象
多态的弊端:
不能调用子类特有的方法

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值