一.面向对象
<一>继承
1.继承的限制
①在Java中只允许单继承(没有类是继承多个类的,可以多层继承。类似于一个儿子只能有一个亲生父亲)
②子类不能直接访问父类的私有资源(需要通过get和set访问)
2.子类对象的实例化
①在子类对象实例化之前,必须先调用父类中的构造方法,之后调用子类构造方法
3.方法的重写
①重写:方法名称相同,返回值类型相同,参数也相同
②在继承中,重写就是子类定义了和父类同名的方法
③重写的限制:被子类重写的方法不能拥有比父类方法更加严格的访问权限(例:若父类为public,子类不能为private和default)
④访问权限:private<default(默认式)<public
⑤super关键字:
强行调用父类的方法的执行
super不一定在重写中使用,也可以表示那些方法是从父类中继承而来的
4.重写和重载的区别
①定义:
重载(Overloading):方法名称相同,参数的类型或个数不同
重写(Overriding):方法名称、参数的类型、返回值类型全部相同
②权限:
重载对权限没有要求,而被重写的方法不能拥有比父类更加严格的权限
③范围:
重载发生在一个类中,重写发生在继承中
<二>抽象类和接口
1.final关键字
①final关键字在Java中被称为完结器,表示最终的意思
②final能声明类、方法、属性:
使用final声明的类不能被继承
使用final声明的方法不能被重写
使用final声明的变量变成常量,常量是不可以被修改的
2.抽象类
①概念:包含一个抽象方法的类就是抽象类
②抽象方法:声明而未被实现的方法,抽象方法必须使用abstract关键字声明
③抽象类被子类继承,子类(如果不是抽象类)必须重写抽象类中的所有抽象方法
④定义格式:
abstract class className{
属性
方法
抽象方法
}
⑤抽象类不能直接实例化,要通过其子类进行实例化
3.接口
①接口是Java中最重要的概念,接口可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法所组成
②接口的格式:
interface interfaceName{
全局常量
抽象方法
}
③接口的实现也必须通过子类,使用关键字implements,而且接口是可以多实现的
④一个子类可以同时继承抽象类和实现接口
⑤一个接口不能继承一个抽象类,但是却可以通过extends关键字同时继承多个接口,实现接口的多继承
<三>多态性
1.多态性
①多态性的体现:
方法的重载和重写
对象的多态性
②对象的多态性(一定要先发生向上转型,再发生向下转型):
向上转型:程序会自动完成
父类 父类对象 = 子类实例
向下转型:强制类型转换
子类 子类对象 = (子类)父类实例
2.instanceof关键字
在Java中可以使用instanceof关键字判断一个对象到底是不是一个类的实例(返回值为布尔值)
<四>泛型
1.泛型(Generic)
①泛型是在JDK1.5之后增加的新功能
②泛型可以解决数据类型的安全性问题,其原理是在类声明的时候通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型
③格式:
访问权限 class 类名称<泛型,泛型...>{
属性
方法
}
④对象的创建:
类名称<具体类型> 对象名称 = new 类名称<具体类型>();
⑤通配符:<?> 无论什么类型都可以使用
2.构造方法中使用泛型
①构造方法可以为类中的属性初始化,那么如果类中的属性通过泛型指定,而又需要通过构造方法设置属性内容的时候,那么构造方法的定义与之前并无不同,不需要像声明类那样指定泛型
3.泛型接口
①JDK1.5之后,不仅仅可以声明泛型类,也可以声明泛型接口,声明泛型接口和声明泛型类的语法类似
②格式:interface 接口名称<泛型标识> {}
4.泛型方法
①泛型方法中可以定义泛型参数,此时参数的类型就是传入的数据类型
②格式:访问权限 <泛型标识>泛型标识 方法名称([泛型标识 参数名称])
5.泛型数组
①使用泛型方法的时候,可以传递或返回一个泛型数组
Java面向对象
最新推荐文章于 2022-03-25 18:39:38 发布