文章目录
面向对象
初始面向对象
面向对象编程的本质:以类的方式组织代码,以对象的形式组织数据
对象的创建分析
- 使用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 !
- 存在条件:继承关系,方法需要重写
- 父类引用指向子类对象!
- 有这些无法实现多态:
- static 方法属于类,不属于实例
- final常量
- 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(); //主动的抛出异常,一般在方法中使用
}
}
自定义异常
方法&数组回顾与加深
方法
方法是语句的集合,它们在一起 可以执行一个功能,Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段.
修饰符 返回值类型 方法名(参数类型 参数名){
...
方法体
return 返回值;
}
方法的调用
调用方法:对象名.方法名(实参列表)
两种调用方式,根据方法是否返回值来选择
-
当方法返回一个值的时候,方法调用通常被当作一个值。
int larger = max(30,40);
-
如果方法返回值是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}};
这里是果力成,欢迎你的到来阅读,持续学习!