JavaSE:面向对象

封装

概念

通过 private 修饰,使其只能在本类中访问(合理隐藏)

提供set/get方法,用于成员变量的 赋值/获取 (合理暴露)

构造方法

作用:

初始化对象,主要是初始化成员变量,new的时候调用对应的构造方法

特点:

方法名和类名一样,没有返回值,也没有void

注意事项:

所有的类都有构造,如果不写,有默认的无参构造,写了则没有默认的,实际开发中,无参和有参都要定义

this关键字:

this代表当前对象引用,区分成员变量和局部变量,通过它可以访问当前对象的成员。

继承

概念

通过 extends 关键字,让类与类之间产生父子关系,子类自动拥有了父类的属性和方法。

有利于提高代码的复用性。

定义格式:

class Fu{}  //父类
class Zi extends Fu{}  //子类
特点

支持单继承,不支持多继承,可以多层继承

继承中成员访问特点

遵循就近原则变量:局部 –> 本类成员位置 –> 父类成员位置 方法:本类成员方法 –> 父类成员方法

方法的重写

子类中出现了和父类方法名,参数列表一模一样的方法,该现象称为方法的重写

私有和静态不存在重写。

子类权限>=父类权限 父类返回值>=子类返回值类型

super

父类标识,通过它可以访问父类成员

抽象类

概念

被abstract 修饰的类就是抽象类

被abstract 修饰的方法就是抽象方法

被abstract 修饰的接口就是抽象接口

抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类

抽象类是做特殊父类出现的,表示多个子类共性方法不具体,不具体用抽象表达

定义格式:

修饰符 abstract 返回值类型 方法名(...); //abstract修饰且{}方法体没有了。
特点

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

抽象类有构造,但是不能直接创建对象。

抽象类的使用是为了让子类继承,从而去实现抽象方法。限制子类有这个方法且要重写。

类继承抽象类后子类必须要实现所有抽象方法,否则是一个抽象子类。

接口

概念

接口是一种特殊的结构,最初设计 里面只能有常量和抽象方法。可以说接口是一个规范。只定义方法没有给实现。

定义格式:

修饰符 interface 接口名{
         public static final 数据类型 常量名 = 值;//修饰符 是默认存在
         
         public abstract 返回值类型 方法名(..);// 修饰符 是默认存在的
   
   }

class 类名 implements 接口名{  所有的抽象方法都要实现  } //子类要实现所有抽象方法,否则是一个抽象子类。

不能直接使用,没有构造,不能创建对象。是为让类来实现,因为它里面定义的称为规范,类去实现规范。

接口和类之间的关系

类和类之间存在继承关系:只能单继承,不能多继承,可以多层继承。

类和接口间存在实现关系:可以单实现,可以多实现。

接口和接口之间存在继承关系:可以单继承,可以多继承。

模板方法设计模式

解决什么问题?

解决方法中存在重复代码的问题。

当系统中出现同一个功能多处在开发,而该功能中大部分代码是一样的,只有其中部分可能不同的时候。

怎么设计?

1、定义一个抽象类。

2、在里面定义2个方法

一个是模板方法:把相同代码放里面去。

一个是抽象方法:具体实现交给子类完成。

多态

多态的概念

同一个对象 表现的多种形态。

基本格式:

父类类型 变量名 = new 子类(); 
多态的前提

1:有继承/实现

2:方法重写(重写之后调用子类的)

3:父类引用指向子类对象。(格式)

多态的转型
//自动向上转型 --> 子转父
    父类类型 变量名 = new 子类();  //自然而然发生
//强制向下转型 --> 父转子
    子类类型 变量名 = (子类类型)父类引用; //强制发生
//注意:完成向下转型时 原来什么类型就转换成什么类型,否则会出现 类型转换异常。
多态好处

提高代码的复用性和扩展性

多态的弊端

多态情况下,只能调用父类定义的方法,无法调用子类特有方法。

如果想要调用子类特有方法就进行强转!!

//强转之前进行判断
if(父类变量 instanceof 子类){
    子类类型 变量名 = (子类类型)父类引用;
}
//jdk14之后
if(父类变量 instanceof 子类 变量名){
}
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
JavaSE

Hello World

2024-3-21 8:14:38

特殊文件、日志技术

2024-4-3 12:11:48

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索