面相对象基础笔记——Java学习

面向对象

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

三大特性: 封装,继承,多态

任何具体的事物都可以是一个对象

类中只有方法和属性

方法的重载

方法的重载是指在一个类中定义多个同名的方法,但是要求参数类型或者参数个数,位置不能相同。

调用方法时通过传递给它们的不同个数和类型的参数,以及传入参数的顺序来决定具体使用哪个方法

  • 方法名相同
  • 方法的参数类型,参数个不一样
  • 方法的返回类型可以不相同
  • 方法的修饰符可以不相同
  • main 方法也可以被重载

String

字符串相比较 (字符串之间不能用== 比较)

  • == : 比的是地址
  • .equals 比的是内容

常用方法:

public int length();          //得到长度
public char charAt(int index);//根据下标得到字符
public String trim();         //去掉前后空格
public int compareTo(String anotherString);   //比较字符串大小  
public boolean endsWith(String suffix);   
	System.out.println(str.endsWith("ld"));     //判断字符串是否以一个字符串结尾
	System.out.println(str.startsWith("He "));  //判断字符串是否以一个字符串开始
public int indexOf(String str);
	System.out.println(str.indexOf("ll"));  // 判断(得到)字符串首次出现的位置的下标
public String substring(int beginIndex, int endIndex);  
	System.out.println(str.substring(11));  // 从字符串下标11的位置一直截取到最后
public String[] split(String regex);  // 以某个字符串分割整个字符串,并存入字符串数组中
public replace(char oldChar, char newChar);  // 字符串替换
public replaceAll(String regex, String replacement);  // 
public boolean equal(Object obj);    // 比较字符串是否相等

构造器

  • **new 的本质就是调用构造方法 **
  • super : 调用父类构造器,必须要在子类第一行(不写的情况下默认就是第一行)
  • super 必须只能出现在子类的方法或者构造方法中
  • super 和 this 不能同时调用构造方法
  • this :本身调用的这个对象 —— 没有继承也可以使用
  • super :代表父类对象的引用 —— 只能在继承条件才可以使用

构造方法: this() ; 本类的构造 super() ;父类的构造

静态—static

特点:

  • 数据共享

  • 属于类的,但不属于对象

  • 优先于对象产生的,且只会执行一次

  • 由于创建对象的过程是在静态类容加载完成之后,在静态方法和静态块里不能使用this

  • 静态的属性使用类名去访问。

  • import static java.lang.Math.random; 静态导入包

方法重写

必须要有继承关系,子类重写父类的方法

  1. 方法名必须相同

  2. 参数列表必须相同

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

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

    不能被重写的方法:

  • static 方法 ,属于类,不属于实例
  • final 常量 private 方法

抽象类

定义: abstract class 类名

  • 抽象类中可以有抽象方法,抽象方法必须写在抽象类中,抽象方法没有方法体
  • 抽象类中可以写普通方法
  • 抽象类不能 new 对象,只能子类去实现他,约束。
  • 意义,提高开发效率

多态

  1. 必须要有继承
  2. 方法必须要重写
  3. 父类引用指向子类
  • 对象执行哪些方法,主要是看对象左边的类型

  • 引用数据类型之间的转换只存在于父子类型之间转换

    Person p1 = new Student();   //向上转型
    Student p2 = (Student)p1;    //向下转型
    

接口

  • 接口只有规范,没有具体实现
  • 接口中的方法都是抽象方法 void 方法名(); //前面默认都是public abstract
  • 接口中的属性都是静态常量
  • 实现接口必须要重写接口中的方法

内部类

  • 一个Java类中可以有多个class类,但是只有一个public class
  1. 成员内部类

    public class Outer {
    	//外部属性
    	private int id = 10;
    	//外部方法
    	public void out() {
    		System.out.println("这是外部类方法!");
    	}
    	//内部类
    	public class Inner{
    		//内部方法
    		public void in() {
    			System.out.println("这是内部方法!");
    		}
    		//获得外部类的私有属性
    		public void getId() {
    			System.out.println(id);
    		}
    	}
    }
    

    内部类new 对象Outer.Inner inner = new Outer().new Inner();

  2. 静态内部类

  3. 局部内部类

    • 写在方法里面的类
  4. 匿名内部类

异常处理

  • 检查性异常: 最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。
  • 运行时异常: 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。
  • 错误: 错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。

Error: Error类对象由Java虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。

	//快捷键  ctrl + Alt + T
	try{
        //try监控区域,可能存在异常的代码
    }catch(Exception e){
        //捕获异常
        //当有异常发生时,执行该区域的代码
    }finally{
        //不论前面是否发生异常,这里面的代码都会执行
    }
	// 捕获多个异常时,范围大的放在后面。

自定义异常类: 必须要继承Exception类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值