首页 > 编程语言 >Java面向对象

Java面向对象

时间:2023-05-11 18:46:17浏览次数:41  
标签:Java 变量 构造方法 对象 子类 面向对象 方法 定义

面向对象编程(OOP)是软件开发的一种新方法,使用这种方法开发的软件具有易维护、可重用和可扩展性等特性。【特征:封装、继承、多态(抽象)】

面向对象基本概念:(面向对象的设计就是一个抽象的过程)

1、对象:对象就是用来描述客观事物的一个实体。用面向对象的方法解决问题,需要对现实世界中的对象进行分析与归纳,找出哪些对象与解决问题的关联。

2、类:类是具有相同的属性和方法的一组对象集合、是面向对象系统中最重要的概念。类定义了对象将会拥有一些特征(属性)和行为(方法)。类与对象的关系就如同模具和用整个模具制作出的物品之间的关系。一个类给出了他的全部对象的的一个统一的定义,而他的每个对象则都是符合这种定义的一个实体。因此类和对象的关系就是抽象和具体的关系。类是多个对象进行综合的抽象的结果,是实体对象的概念模型,而一个对象是一个类的实例。

面向对象的优点:

​ 1).与人类的思维习惯一致:面向对象的思维方式是从人类考虑问题的角度出发,把人类解决问题的思维过程转变为程序能够理解的过程、面向对象程序设计使用"类"来模拟现实世界中的抽象概念,用"对象"来模拟现实世界的实体从而用计算机解决现实问题

​ 2)信息隐藏,提高了程序的可维护性和安全性:封装实现了模块化和信息隐藏,即将类的属性和行为封装在类中,这保证了对他们的修改不会影响到其他对象,利于维护。
同时,封装使的在对象外部不能随意访问对象的属性和方法,避免了外部错误对它影响,提高了安全性.

​ 3)提高了程序的可重用性:一个类可以创建多个对象实例,体现了重用性。

  类的定义:

                   1)发现类,类定义了对象将会拥有的特征(属性)和行为(方法)。

                   ​2)发现类的属性,对象拥有的静态特征在类中表示时称为类的属性。

                   3)发现类的方法,对象执行操作称为类的方法
例:(网络上搜索)

public class Test1 {
public static void main(String[] args) {
//p是引用对象,持有了对于Person对象的地址值的引用
//此时的p,含有属性,但都是默认值
Person p = new Person();
//设置属性值
p.name="lisi";
p.age=20;
//调用方法
p.eat();
p.sleep();
}
}
class Person{
//属性--成员变量
String name;
int age;
//行为--方法
void eat(){
System.out.println("aaa");
}
void sleep(){
System.out.println("bbb");
}
}

类中成员主要包含两个部分:成员变量和成员方法

成员变量:类中的属性,即直接在类中定义的变量称为成员变量;定义在方法的外部。成员变量的作用域在整个类内部都是可见的,所有的成员变量都可以使用它,如果访问权限允许,还可以在类的外部使用成员变量。如果在类的定义中没有给成员变量赋值,Java会给一个默认值,基本数据类型的值为0;引用数据类型值为null。(成员变量可以在声明时赋初始值!)

成员方法:

1、带参数的方法
在实际应用中经常使用带参数或有返回值的方法(每个人的工作目标都不一样,所以在Person类中定义不同的方法)

2、方法调用:

静态方法调用静态方法:用静态方法时通过(类名.方法名)的方法进行调用,当调用方法和被调用的方法在同一类中时,类名可省略,直接通过方法名进行调用,也可以通过对象进行调用;

静态方法调用非静态方法:静态方法调用非静态方法时,均需要通过对象进行调用。

方法重载:

方法重载是指在同一个类中,定义了多个同名方法,但同名方法的参数类型或参数个数不同就是方法重载。

特点:
       1)在同一个类中。
       2)方法名相同
       3)参数个数或者类型不同
       4)方法的返回值不能作为判断方法是否构成重载的依据。

例:

public class OverloadExample {
public static void method() {
// doSomething
}

public static void method(String name) {
// doSomething
}

public static void method(Integer id) {
// doSomething
}

public static void method(Integer id, String name) {
// doSomething
}
}

方法重写:

方法重写(Override)是一种语言特性,它是多态的具体表现,它允许子类重新定义父类中已有的方法,且子类中的方法名和参数类型及个数都必须与父类保持一致,这就是方法重写。

注意事项:

               1、子类方法的权限控制符不能变小,也就是如果父类方法的权限控制符是 protected,那么子类的方法权限控制符只能是 protected 或 public;
               2、子类方法返回的类型只能变小,也就是说如果父类方法返回的是 Number 类型,那么子类方法只能返回 Number 类型或 Number 类的子类 Long 类型,而不能返回 Number 类型的父类类型 Object;
               3、子类抛出异常的类型只能变小;
               4、子类方法名必须和父类方法名保持一致;
               5、子类方法的参数类型和个数必须和父类保持一致。

例:(参考网络)

/**
* 父类中有一个 method 方法
*/
class Father {
public void method(String name) {
System.out.println("Father:" + name);
}
}
/**
* 子类中重写了父类的 method 方法
*/
class Son extends Father {
@Override
public void method(String name) {
// 子类中重新定义了打印的行为,不再是 Father:XXX,而是 Son:XXX
System.out.println("Son:" + name);
}
}

方法重写与方法重载的异同:

方法重写(Override)和方法重载(Overload)都是面向对象编程中,多态特性的不同体现,方法重写描述的是父类和子类的方法关系,而方法重载描述的是同一个类中多个同名方法的方法关系。除此之外方法重写和方法重载还有:Override 关键字、参数类型和参数个数、返回类型、抛出异常和权限控制符等不同点。 ​

其他:

1、局部变量
局部变量就是定义在方法中的变量。work()方法中的变量age就是局部变量,虽然成员变量和局部变量age名称一样,但表示的不是一个变量。局部变量在使用前需要赋值;否则可能编译出错。局部变量和成员变量可以同名,并一起使用,局部变量具有更高的优先级。作用域仅限于定义它的方法,在该方法外无法访问该局部变量。

2、数据类型
在java中变量的数据类型分为两种:基本数据类型、引用数据类型
java中引用数据类型包括三种:类、数组、接口

构造方法

Java中,当类创建一个对象时会自动调用该类的构造方法,构造方法分为默认构造方法和带参数的构造方法

1.构造方法的定义

​ 构造方法的主要作用是进行一些数据的初始化

​ 定义构造方法的语法格式如下。

1).构造方法没有返回值

​ 2).默认构造方法没有参数,因此参数列表可选

​ 3).构造方法的方法名与类名相同

2.构造方法重载

​ 构造方法也可以重载,即在同一个类中可以定义多个重载的构造方法。

 

标签:Java,变量,构造方法,对象,子类,面向对象,方法,定义
From: https://www.cnblogs.com/yyyuy/p/17391917.html

相关文章

  • Java8中的sort与Comparator、Comparable
    基本含义在Java8中,sort()方法、Comparator接口和Comparable接口是用于对数组或集合进行排序的重要工具,其中Comparator接口适用于自定义比较规则,而Comparable接口适用于定义对象自身的比较规则。假如我们有一个实体类点击查看代码publicclassCoinUserIncome{pr......
  • JavaScript 中的 `for...in` 和 `for...of`
    JavaScript中的for...in和for...of是两种常用的迭代循环语句。它们的用途和行为是不同的。for...in循环用于循环遍历对象的属性,它会遍历对象的可枚举属性和原型链上的可枚举属性。constobj={a:1,b:2};for(letpropinobj){console.log(prop);//输出'a'......
  • 【Java】非访问修饰符 final、static 、abstract
    非访问修饰符final修饰符final可以修饰类、属性和方法<但不能用于修饰构造方法>private不能被子类方法覆盖,private类型的方法默认是final类型的 final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。Tips:final变量定义的时候,可以先......
  • 【Java】Java 异常处理
    1、什么是异常?将程序执行中发生的不正常情况称为“异常”2、Java程序在执行过程中所发生的异常事件可分为两类java.lang.Error:一般不编写针对性的代码进行处理java.lang.Exception:可以进行异常的处理Error:Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等......
  • Java虚拟机运行时退出运行
    虚拟机启动直接退出运行,是因为某一个类需要加载到IOC容器里创建bean时无法加载进去,这时候需要检查一下是不是有哪些方法或者类没有写完 ......
  • Java内存模型原理,你真的理解吗?(转载)
    内存模型产生背景在介绍Java内存模型之前,我们先了解一下物理计算机中的并发问题,理解这些问题可以搞清楚内存模型产生的背景。物理机遇到的并发问题与虚拟机中的情况有不少相似之处,物理机的解决方案对虚拟机的实现有相当的参考意义。物理机的并发问题硬件的效率问题计算机处......
  • java基础语法
    JAVA基础语法注释单行注释://System.out.println("Helloworld");多行注释:/*System.out.println("Helloworld");System.out.println("Helloworld");System.out.println("Helloworld");*/文档注释:/***@Descr......
  • java 启动参数设置
    nohupjava-Xms512m-Xmx1024m-XX:PermSize=64m-XX:MaxPermSize=512m-jarxxx.jar>>xxx.out2>&1&java虚拟机对外提供的可配置堆区的参数1、-Xms:表示java虚拟机堆区内存初始内存分配的大小,通常为操作系统可用内存的1/64大小即可,但仍需按照实际情况进行分配。有可能真的按......
  • Java生成微信小程序码
    官网文档地址:获取小程序码packagetest;importcom.alibaba.fastjson.JSONObject;importcom.fasterxml.jackson.core.JsonProcessingException;importcom.fasterxml.jackson.databind.ObjectMapper;importorg.apache.http.HttpEntity;importorg.apache.http.client.met......
  • java代码中fastjson生成字符串和解析字符串的方法和javascript文件中字符串和json数组
    1.java代码中fastjson生成字符串和解析字符串的方法List<TemplateFull>templateFulls=newArrayList<TemplateFull>();JSONArrayjsonArr=newJSONArray();jsonArr.addAll(templateFulls);StringjsonStr=jsonArr.toJSONString();System.out.pr......