java面向对象进阶

简介: java面向对象进阶
java面向对象进阶

用来管理不同的类,利于程序的管理和维护

包名建议全部英文小写

package com.www.javabean;
public class Student{
    
}

建包语句必须写在第一行

  • 相同包下的类可以直接访问,不同包下的类必须导包,才可以使用
import 包名.类名
  • 假如一个类中需要用到不同类,而这个两个类的名称是一样的,那么默认只能导入一个类,另一个类要带包名访问
权限修饰符

用来控制一个成员能够被访问的范围

可以修饰成员变量,方法,构造器,内部类

private -> 缺省-> protected ->public

自定义成员一般应满足的要求:

  1. 成员变量一般私有
  2. 方法一般公开
  3. 本类 + 同一个包内的其他类 + 子类 访问 --> protected
final

final 关键字可以修饰(类 方法 变量)

  • 修饰类:表明该类是最终类,不能被继承
  • 修饰方法:表明该方法是最终方法,不能被重写
  • 修饰变量:表示该变量第一次赋值后,不能再次被赋值(有且仅能被赋值一次
  • final修饰的变量是基本类型:那么变量存储的数据值不能发生改变
  • final修饰的变量是引用类型:那么变量存储的地址值不能发生改变,但是地址指向的对象内容是可以发生变化的
常量
  • 使用了public static final修饰的成员变量,必须有初始化值,而且执行的过程中其值不能被改变
  • 常量名的命名规范:英文单词全部大写,多个单词下划线连接起来
  • 常量的作用:通常用来记录系统的配置数据
  • 在编译阶段会进行“宏替换”:把使用常量的地方全部替换成真实的字面量。
枚举
修饰符 enum 枚举名称{
    第一行罗列枚举类实例的名称
}
enum Season{
    SPRING,SUMMER,AUTUMN,WINTER;  //分号
}
  • 枚举类都是继承了枚举类型:java.lang.Enum
  • 枚举都是最终类,不可以被继承
  • 构造器都是私有的,枚举对外不能创建对象
  • 枚举类的第一行默认都是罗列枚举对象的名称的。
抽象类

abstract 可以修饰类,成员方法

abstract修饰类,这个类就是抽象类;修饰方法,这个方法就是抽象方法

修饰符 abstract class 类名{
    修饰符 abstract 返回值类型 方法名(形参列表);
}
public abstract class Animal{
    public abstact void run();
}
  • 抽象方法只有方法签名,不能声明方法体。
  • 一个类中如果定义了抽象方法,这个类必须声明成抽象类,否则报错
  • 抽象类可以理解成不完整的设计图,一般作为父类,让子类来继承。具体实现交给子类去完成
  • 一个类如果继承了抽象类,那么这个类必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类。
  • 类有的成员(成员变量、方法、构造器)抽象类都具备
  • 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
  • 不能用abstract修饰变量、代码块、构造器。
  • 抽象类不能创建对象
  • abstract定义的抽象类作为模板让子类继承,final定义的类不能被继承
  • 抽象方法定义通用功能让子类重写,final定义的方法子类不能重写。
  • 模板方法建议使用final 修饰, 模板方法是给子类直接使用的,不是让子类重写的,加上final后可以防止子类重写了模板方法
多态

常见形式

父类类型 对象名称 = new  子类构造器();
  • 方法调用:编译看左边,运行看右边。 --> 调用子类的方法
  • 变量调用:编译看左边,运行也看左边 --> 调用父类的成员变量

多态的条件

  • 有继承/实现关系;
  • 有父类引用指向子类对象;
  • 有方法重写(多态侧重行为多态)

定义方法的时候,使用父类型作为参数,该方法就可以接收这父类的一切子类对象,体现出多态的扩展性与便利。

多态下不能使用子类的独有功能

多态类型转换
  1. 自动类型转换 子类-> 父类
  2. 强制类型转换 父类-> 子类
  • 从父到子( 必须进行强制类型转换,否则报错): 子类 对象变量 = (子类)父类类型的变量
  • 建议强转转换前使用instanceof判断当前对象的真实类型,再进行强制转换
变量名 instanceof 类型
判断变量是否是类型或者是其子类类型,是则返回true
相关文章
|
23天前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
22 1
|
1月前
|
JavaScript 前端开发 Java
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。如果你从我的文章中受益,欢迎关注我,我将持续更新更多优质内容。你的支持是我前进的动力!🎉🎉🎉
24 0
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
|
1月前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
38 2
|
3月前
|
Java 编译器
封装,继承,多态【Java面向对象知识回顾①】
本文回顾了Java面向对象编程的三大特性:封装、继承和多态。封装通过将数据和方法结合在类中并隐藏实现细节来保护对象状态,继承允许新类扩展现有类的功能,而多态则允许对象在不同情况下表现出不同的行为,这些特性共同提高了代码的复用性、扩展性和灵活性。
封装,继承,多态【Java面向对象知识回顾①】
|
3月前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
38 4
|
3月前
|
Java
接口和抽象类【Java面向对象知识回顾②】
本文讨论了Java中抽象类和接口的概念与区别。抽象类是不能被实例化的类,可以包含抽象和非抽象方法,常用作其他类的基类。接口是一种纯抽象类型,只包含抽象方法和常量,不能被实例化,且实现接口的类必须实现接口中定义的所有方法。文章还比较了抽象类和接口在实现方式、方法类型、成员变量、构造方法和访问修饰符等方面的不同,并探讨了它们的使用场景。
接口和抽象类【Java面向对象知识回顾②】
|
2月前
|
存储 Java 程序员
Java基础-面向对象
Java基础-面向对象
24 0
|
4月前
|
Java 数据处理 开发者
【Java基础面试十二】、说一说你对面向对象的理解
这篇文章阐述了面向对象是一种以类和对象为基础,通过封装、继承和多态等概念来模拟现实世界中的事物及其相互关系的程序设计方法,它强调以事物为中心进行思考和系统构造,与结构化程序设计相比,更符合人类的自然思维方式。
【Java基础面试十二】、说一说你对面向对象的理解
|
4月前
|
Java
【Java基础面试十三】、面向对象的三大特征是什么?
这篇文章介绍了面向对象程序设计的三大基本特征:封装、继承和多态,其中封装隐藏对象实现细节,继承实现软件复用,多态允许子类对象表现出不同的行为特征。
【Java基础面试十三】、面向对象的三大特征是什么?
|
3月前
|
安全 Java Go
面向对象程序设计语言:Java
Java语言语法和C语言和C++语言很接近,很容易学习和使用,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的特性,Java语言不使用指针,而是引用,并提供了自动分配和回收内存空间,使得程序员不必为内存管理而担忧
76 2