面向对象编程(OOP)
属性+方法=一个类
面向过程:线性思维
面向对象:物以类聚,分类的思维模式(多人协作)
(Object-Oriented Programming):以类的方式组织代码,以对象组织(封装)数据
三大特性:
封装/继承/多态
方法
/*
修饰符 返回值的类型 方法的名字(方法参数){
//方法体
return 返回值;
}
eg:public Stirng helloWorld(){return "helloWorld!"}
*/
break与return区别?
break:跳出switch,结束循环
continue跳出本次循环
return:方法结束,返回一个结果!
异常抛出
//数组下标越界
方法的调用
一.静态方法与非静态方法
//静态方法 static
可以通过类名.方法
//非静态方法
1.实例化这个类,用new
2.对象名.方法
Student student = new Student()
student.say
值传递与引用传递
引用传递:对象,本质还是值传递
类与对象
类是一类抽象的数据类型,对象是抽象概念的具体实例
创建对象new:student1是类Student类的具体实例
Student student1 =new Student()
//一个项目应该只有一个main方法
构造器(必须掌握!!!)
public class Person{}
Person person = new Person();
一个类即使什么也不写,也存在一个构造类
构造器有两个特点:1.必须和类的名字相同
2.必须没有返回类型,也不能写void
public person(){}
使用new关键字,必须有构造器!**构造用来初始化对象的值**
有参构造:一旦定义了有参构造,无参就必须显示定义!
//Alt+insert 快捷键创建
对象内存分析(理解)
默认初始值
数字:0.0
char:u0000
boolean:false
引用:null
封装(数据的隐藏)
该露的露,该藏的藏-----“高内聚,低耦合”
private:私有。提供一些public的get,set方法。
快捷键(alt+insert)
/提高程序的安全性,隐藏代码的实现细节,统一接口,系统可维护性增强/
继承(认真理解)
extends:public class teacher extends Person{}
修饰符:public,protected,default,private
(ctrl+H)侧边打卡一棵数,查看继承关系
在java中,所有的类,都默认继承object类
java中只有单继承,没有多继承!!!
Super
name,this.name,super.name
1.super是调用父类的构造方法,必须在构造方法的第一个
2.suoer必须只能出现在子类的方法或者构造方法中!
3.super和this不能同时调用构造方法!
Vs this:
this:本身调用者者个对象
super:代表父类对象的应用
方法重写
//父类的引用指向子类
//方法的调用只和左边定义的数据类型有关
注解:有功能的注释!Override重写,显示圆圈跟箭头。
重写:需要有继承关系,子类重写父类方法
1.方法名相同
2.参数相同
3.修饰词:范围可以扩大,但是不能缩小
public>protected>default>private
4.抛出的异常:范围可以缩小,但是不能被扩大 ClassNotFoundException---->Exception(大)
Alt+Insert---->override;
多态
动态编译:可扩展行变强
对象能执行那些方法,主要看对象左边的类型,和右边关系不大!
注意事项:
/*
1.多态是方法的多态,属性没有多态
2.父类和子类有联系
类型转换异常,Classcastexpection
3.存在条件:存在继承关系,方法需要重写,父类的引用指向子类对象!
*/
没办法重写的方法:static方法不属于实例,final常量,private私有
instanceof
判断一个对象是什么类型
抽象:编程思想!
static
抽象类
abstract:抽象方法,只有方法名字,没有方法的实现!!!不能new,只是约束,靠子类实现
接口可以多继承(extends单继承)
接口
接口:只有规范!自己无法写方法。专业的约束!约束和实现分离。
interface!!!
接口中的所有定义都是抽象的,接口都需要有实现类!!!
implement
//抽象的思维
接口的作用:
1.约束
2.定义一些方法,让不同的人实现
3.方法都是public abstract
4.常量都是public static final
5.接口不能实例化
6.implements可以实现多个接口
内部类
内部类就是在一个类的内部再定义一个类
1.成员内部类
2.静态内部类
3.局部内部类
4.匿名内部类