Java之面向对象
1.java核心技术
2.数据结构java版
数组与方法的互操作
- 数组与方法的互操作-引用传递
- 方法接受数组
- 方法返回数组
- 方法修改数组
java对数组的支持(应对笔试,可以直接调用)
- 1.排序
java.util.Arrays.sort(数组名称);
(支持所有基本数据类型数组)内部使用双轴快速排序 - 2.数组部分拷贝
System.arraycopy(源数组名称,源数组开始点,目标数组名称,目标数组开始点,拷贝长度);
目标开始点是修改的第一个位置
public class test{
public static void main(String args[]){
int []A = new int[]{1,2,3,4,5};
int []B = new int[]{9,8,7,6,5,4,3};
System.arraycopy(A,0,B,0,3);
System.out.print("A数组中的内容:");
for(int i = 0; i < A.length;i++)
System.out.print(A[i]+" ");
System.out.println();
System.out.print("B数组中的内容:");
for(int j = 0;j < B.length;j ++)
System.out.print(B[j]+" ");
System.out.println();
System.out.println("拷贝完成");
}
}
- 3.数组全拷贝(********)
java.util.Arrays.copyOf(源数组名称,新数组长度):int[]
java动态数组动态扩容方法
Java面向对象编程–类与对象
- 1.面向对象编程范式(C++,java,Go)----(由一系列对象组成,多个对象之间)能进行现实生活的抽象
每个对象-类
属性以及方法
OOA:面向对象分析
OOP:面向对象编程
OOD:面向对象设计
(OOAD–以后必学)
面向对象三大特征:
a.封装性:将客观事物封装成为抽象的类,每个类都有自己的属性与方法,并且类可以让自己的数据与方法只让可信的类或对象操作,对不可信的进行信息隐藏(内部操作对外部而言不可见,强调保护性)
b.继承性:可以实现现有类的所有功能,并且在无需重新编写原有类代码的情况下进行功能上的扩展
c.多态性(******):指一个类实例的相同方法在不同情形下有不同的表现形式
多态机制使得具有不同内部结构的对象可以共享相同的外部接口(利用多态可以得到良好的设计)
Java中类与对象的定义与使用
类是共性的概念,而对象是一个具体的,可以使用的事物
类是生产对象的蓝图,先有类才可以产生对象。对象的所有属性与行为,一定在类中进行了完整的定义
class 类名称{
属性1;
属性2;
...
方法1(){}
方法2(){}
...
}
- 类中的属性与方法(不带static关键字的)只能通过对象调用
- 对象的产生语法
类名称 对象名称 = new 类名称();
- 对象内存分析
栈内存(虚拟机局部变量表):存放的是局部变量(各种基本数据类型,对象引用-对象名字)
堆内存:保存对象
new表示在堆上新分配空间
垃圾空间:没有任何栈空间指向的堆内存空间
private实现封装
- 2.private实现封装
将属性,方法用private封装后表示,被封装的属性和方法只能在本类中使用,类外部不可见
此时要是想访问被封装的属性,必须提供getter与setter方法
setter方法:主要进行属性内容的设置与修改
eg:
private String name;
public void setName(String n){
name = n;
}
public void getName(){
return name;
}
getter方法:主要进行属性内容的取得 - 类的设计原则:编写类的时候,没有额外说明,所有属性必须使用private封装(成员变量)
构造方法
- 3.构造方法(类中属性初始化)
构造方法三大特征:
a.构造方法必须与类名称相同
b.构造方法没有返回值类型声明
c.每个类中一定至少存在一个构造方法,如果没有明确定义,系统会自动生成无参构造,若在类中自定义了构造方法,则系统不再默认生成无参构造 - 构造方法重载:(仅限于)参数个数不同
- 类定义顺序:
1.定义属性 -> 2.定义构造方法 -> 3.定义普通方法
代码块的定义与使用
-
1.代码块的定义与使用
根据代码块出现的位置以及关键字,总共分为以下四类代码块 -
1.1 普通代码块(了解)
定义在方法中的代码块 -
1.2构造块(********)
定义在类中的代码块(不加任何修饰符)
在对象产生时,优先于构造方法执行,有几个对象产生,就调用几次构造块
用于在构造方法执行前完成一些属性的初始化操作 -
1.3静态代码块
a.非主类中的静态代码块
在类加载时执行(啥时候第一次用到这个类),优先于构造块执行,无论有多少对象产生,只会调用一次
b.主类中的静态代码块
主类中的静态块优先于主方法执行 -
1.4同步代码块(多线程同步部分再议)
继承的定义与使用
- 2.继承的定义与使用
在已有基础上进行功能上的扩充(可重用)
判断两个类直接能否使用继承:(is a)方式套用
Student is a person
Java中类继承使用extends关键字
class 子类名 extends 父类
子类(派生类)
父类(超类-基类) - 2.2 继承的限制
- 2.2.1
子类对象实例化前首先调用父类构造方法产生父类对象后再调用子类的构造方法实例化子类对象(367215421548) - List item
2.2.2
Java只允许单继承类,不允许多继承(一个子类同时只能继承一个类)(Java的单继承局限)
要想在Java中实现类似的“多继承”,要么多层继承,要么使用内部类
- 2.2.3
在继承时,子类会继承父类的所有属性(包含“私有域”与其他属性,方法)
显示继承:所有非私有操作属于显示继承(可以直接调用)
隐式继承:所有的私有操作属于隐式继承(不可以直接调用,需要通过其他形式调用) - 3.覆写(重写)-override
定义:如果子类定义了与父类完全相同(不算权限)的方法或者属性的时候,这样的操作就称为覆写 - 3.1方法的覆写(**********)
定义:子类定义了与父类方法名称,参数列表,返回值完全相同的方法;被覆写的方法不能拥有比父类更为严格的访问控制权限(>=父类权限,不能出现private)
判断要用的到底是父类方法or子类方法:
a.看new在哪(当前使用的对象是通过哪个类new的)
b.调用的方法有没有被子类覆写,如果被覆写,调用的一定是被覆写后的方法
private<default(啥也不写)-包访问权限<public
方法覆写“不能出现private关键字” - 3.2属性的覆写(了解)
子类定义了和父类属性名称等完全一样的
请解释方法重载和方法重写的区别: - a.概念上
重载:方法名称相同,但却在不同的场合做不同的事 - b.范围:重写是在有继承关系的情况下
- c.权限要求:重载没有权限要求
//面向过程编程范式(C语言)—由一系列行为动作组成(不太提)
面向切面编程(EE-AOP)
面向接口编程(**)(接口优先原则)
函数式编程-Scala(跑在JVM上)
() -> {}
//Java中,不允许出现重复代码