面向对象的基础知识

面向对象编程

面向对象&面向对象

对于描述复杂的事物,为了从宏观上把握、从整体上合理的分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路进行解决

什么是面向对象

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

抽象

三大特性

封装:属性私有,get/set

继承

多态

静态方法

静态方法和非静态方法

形参和实参

值传递和引用传递

构造器

  1. 使用new关键字,本质是在调用构造器

  2. 和类名相同,没有返回值

  3. 用来初始化值

  4. Alt + insert 自动生成构造器(windows)command + n 在选择constructor(mac)

super注意点

  1. super调用父类的构造函数,必须在构造方法的第一个

  2. super必须出现在子类的方法中或者构造方法中

  3. super和this并不能同时调用构造方法

    vs this

    代表的对象不同

    this 代表本类

    super代表父类

    前提

    this没有父类也可以调用

    super必须在继承的条件下才可以进行使用

    构造方法

    this()本类的构造

    super() 父类的构造

重写

  1. 需要有继承关系,子类重写父类的方法

  2. 方法名必须相同

  3. 参数列表必须相同

  4. 修饰符:范围可以扩大,但是不能缩小

  5. 抛出的异常:范围,可以被缩小,但不能扩大

多态

  1. 多态是方法的多态,属性没有多态

  2. 父类和子类,有联系 类型转换异常!ClassCastException

  3. 存在条件:继承关系,方法需要重写,父类引用指向子类对象

  4. 以下不可进行重写,所以也不存在多态的说法

    1. static方法,属于类,她不属于实例

    2. final常量

    3. private方法

instanceof与类型转换

  1. 子类转换为父类,向上转型

  2. 父类转换为子类,向下转型

  3. 方便方法的调用,减少重复的代码!

代码块

静态代码块

public class Person{
  {
    System.out.println("匿名代码块");
  }
  //静态代码块,最早加载,和类一起加载 只执行一次
  static{
    System.out.println("静态代码块");
  }
  //构造器
  public Person(){
    System.out.println("构造方法");
  }
  public static void main(){
    Person person1 = new Person();
    System.out.println("######################");
    Person person2 = new Person();
  }
}
//输出的姐结果
//静态代码块
//匿名代码块
//构造方法
//#####################
//匿名代码块
//构造方法
import static java.lang.Math.random;
public class Test{
  public void static main(){
    System.out.println(random());
  }
}
  1. 不能new这个抽象类,只能靠子类去实现:约束

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

  3. 抽象方法必须在抽象类中

  4. 抽象类可以拥有构造器

    public abstract class A {
        public abstract void run();
        A(){
            System.out.println("抽象类的构造器");
        }
    }
    public class outer{
      private int id;
      public void out(){
        System.out.println("这是外部类的方法");
      }
      public class Inner{
        public void in(){
              System.out.println("这是内部类的方法");
        }
        public void getId(){
              System.out.println(id);//获得类的私有属性
        }
      }
      
    }
    //try catch finally throw throws
    public static void main(String[] args) {
            int a = 0;
            int b = 20;
            try {
                new test().a();
            }catch (StackOverflowError e){
                System.out.println(e);
            }finally {
                System.out.println("finally");
            }
        }
        public void a(){
            b();
        }
        public void b(){
            a();
        }
    }

    自定义异常

    throws(在方法上抛出异常)

    throw抛出异常(一般在方法中)

    异常处理的五个关键字:try catch finally throw throws

    1. 抛出异常

    2. 处理异常

    异常的处理机制

    error通常都是灾难性的致命错误,是程序无法控制和处理的,当出现这些异常的时候,Java虚拟机一般会选择终止进程;exception通常情况下是可以被程序进行处理的,并且在程序中应该尽可能的去处理这些异常。

    exception与Error

猜你喜欢

转载自blog.csdn.net/chenyundage107/article/details/106151819