面向对象以及方法数组

面向对象

初始面向对象

面向对象编程的本质:以类的方式组织代码,以对象的形式组织数据

对象的创建分析

  • 使用new关键字创建对象
//类:抽象的,实例化
Student xiaohua = new Student();

xiaohua.name="小华";
xiaohua.age=20;

System.out.println(xiaohua.name);
System.out.println(xiaohua.age);
  • 构造器

    • 必须和类的名字相同

    • 必须没有返回类型,也不能写void

    • Alt+insert 生成构造器,有参
      

面向对象三大特性

封装(数据的隐藏)

* 1.提高程序的安全性
* 2.隐藏代码的实现细节
* 3.统一接口
* 4.系统可维护增加

继承(extends)

  • 子类是父类的扩展,子类会拥有父类的全部方法;

  • Java类中只有单继承,没有多继承(一个儿子只能有一个爸爸,一个爸爸可以有多个儿子);

  • 继承是类与类的关系;用关键字extends表示

  • super

    super()//调用父类的构造器,必须要在子类构造器的第一行
    

    super跟this不能同时调用构造方法

  • 方法重写

    需要继承关系,子类重写父类的方法
    子类和父类的方法必须要一致
    

多态

  • 多态是方法的多态,属性没有多态
  • 父类和子类有联系,类型转换异常!ClassCastException !
  • 存在条件:继承关系,方法需要重写
  • 父类引用指向子类对象!
  • 有这些无法实现多态:
    1. static 方法属于类,不属于实例
    2. final常量
    3. private方法

static

静态的变量

package opp;

public class Person01 {
    
    
    //2
    {
    
    
        System.out.println("匿名代码块");
    }
    //1 只执行一次
    static {
    
    
        System.out.println("静态代码块");
    }
    //3
    public Person01(){
    
    
        System.out.println("构造方法");
    }

    public static void main(String[] args) {
    
    
        Person01 person01 = new Person01();
        System.out.println("================");
        Person01 person02 =new Person01();
    }
}

抽象类和接口

抽象类(单继承)

  • 抽象类不能new,只能靠子类去实现它;可以看成是一种约束

  • 抽象方法必须在抽象类中

  • 抽象类中可以写普通的方法

    //abstract 抽象类
    public abstract class Action {
    
        //abstract,抽象方法,只有方法名字,没有方法的实现
        public abstract void doSomething();
    }
    

接口(可以实现多继承)

  • 接口就是规范

  • 约束和实现分离

  • 接口也不能被实例化,接口中没有构造方法

    //interface
    //接口都需要有实现类,定义UserServiceImpl
    public interface UserService {
          
          
    
        //接口中的所有定义都是抽象的 public
        void add(String name);
        void delete(String name);
        void update(String name);
        void query(String name);
    }
    
    //类,可以实现接口,implements
    //alt+insert--->implements
    public class UserServiceImpl implements UserService {
          
          
        @Override
        public void add(String name) {
          
          
    
        }
    
        @Override
        public void delete(String name) {
          
          
    
        }
    
        @Override
        public void update(String name) {
          
          
    
        }
    
        @Override
        public void query(String name) {
          
          
    
        }
    

内部类

private int id;
public void out(){
    
    
    System.out.println("这是外部类的方法");
}
class Inner{
    
    
    public void in(){
    
    
        System.out.println("这是内部类的方法");
    }
}

异常(Exception)

  • 检查性异常(用户错误或问题引起的异常)

  • 运行时异常(可能被程序避免的异常,在编译时被忽略)

  • 错误 error(错误不是异常,而是脱离程序员控制的问题 )

  • Error和Exception的区别:

    Error通常是灾难性的致命的错误,是程序无法控制和处理的,当出现这些异常时,java虚拟机(JVM)一般会选择终止线程;Exception通常情况下是可以被程序处理的。

  • 异常处理五个关键字:

    try、catch、finally、throw、throws

捕获和抛出异常

捕获

选中语句快捷键,ctrl+alt+t

抛出(throws)
   try {
    
    
        new Test01().test01(1,0);
    } catch (ArithmeticException e) {
    
    
        e.printStackTrace();
    } finally {
    
    
    }
    

}

private void test01(int a, int b) throws ArithmeticException {
    
    
    if (b==0){
    
    
        throw new ArithmeticException(); //主动的抛出异常,一般在方法中使用
    }
}
自定义异常

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uQeNRfRM-1647396872450)(C:\Users\zc1472641480\AppData\Roaming\Typora\typora-user-images\image-20220315155654052.png)]

方法&数组回顾与加深

方法

方法是语句的集合,它们在一起 可以执行一个功能,Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段.

修饰符 返回值类型 方法名(参数类型 参数名){
    
    
	...
	方法体
	return 返回值;
}

方法的调用

调用方法:对象名.方法名(实参列表)

两种调用方式,根据方法是否返回值来选择

  1. 当方法返回一个值的时候,方法调用通常被当作一个值。

    int larger = max(30,40);
    
  2. 如果方法返回值是void,方法返回值一定是一条语句。

    System.out.println("Hello guolicheng!");
    

方法的重载

重载就是在类中有相同的函数名称,但形参不同的函数

命令行传参

运行一个程序的时候给它传递消息,这要靠传递命令行参数给main( )函数实现

可变参数

传递同类型的可变参数给一个方法

递归

A方法调用A方法,自己调用自己

包括:

  • 递归头

    什么时候不调用自身方法,如果没有头,将陷入死循环

  • 递归体

    什么时候需要调用自身方法

数组

数组是相同类型数据的有序集合

数组下标从0开始

  • 声明数组变量

    dataType[] arrayRefVar;
    
    int[] nums1; //1.定义,java首选这种定义方法
    int nums2[]; //2.定义,c,c++的定义方法
    
  • 使用new操作符来创建数组

    dataType[] arrayRefVar = new dataType[arraySize];
    
    int[]  nums1 = new int[10]; //2.创建一个数组。可以存放10个int类型的数据
    
    
    获取数组长度 array.length
    
  • 静态初始化

    int[] a = {
          
          1,2,3,4,5,6};
    System.out.println(a[1]);
    
  • 动态初始化

    int[] b = new int[10];
    b[1]= 3;
    System.out.println(b[1]);
    
  • 默认初始化

    不赋值,数组内元素默认是0

  • 二维数组

    //二维数组
    int[][] array = {
          
          {
          
          1,2},{
          
          2,3},{
          
          3,4}};
    

这里是果力成,欢迎你的到来阅读,持续学习!

猜你喜欢

转载自blog.csdn.net/qq_58372242/article/details/123519623