什么是面向对象
方法
- 修饰符
- 返回类型
- break跳出switch,结束循环和return的区别
- 方法名:注意规范
方法的调用:递归
- 静态方法static可以直接调用到另一个类通过类+方法名()调用
- 非静态方法时要通过new来实例化对象
- 类名 +名字=new +类();
- 在main方法中值是不受方法中相同值的影响返回后的值依旧是main方法中的值
- 引用传递:对象,本质还是值传递
- 创建初始化对象
- 一个项目应该只有一个mian方法
- 1.类与对象
- 类是一个模板:抽象,对象是一个具体的实例 2.方法
封装
- 高内聚,低耦合
- 重要是private 方法
- 提供一些可以操作的方法
- 提供get/set
private String name; public String getName() { return this.name; } public void setName(String name) { this.name = name; } }
public static void main(String[] args) { dem01 stu=new dem01(); stu.setName("aaaa"); System.out.println(stu.getName()); }
- 提高程序的安全性,保护数据
- 影藏代码的实现细节
- 统一接口
继承
- this只当前类
- super指向父类
- super调用父类的构造方法,必须在构造方法的第一个
- super必须只能出现在子类的方法或者构造方法中
- super和this不能同时调用构造方法
Vs this:
- 代表的对象不同
- this:本身调用者这个对象
- super:代表父类对象的应用
前提
- this:没有继承也可以
- super只有在继承条件才可以使用
构造方法
- this();本类的构造
- super():父类的构造!
重写:需要有继承关系,子类重写父类的方法
- 方法名必须相同
- 参数列表列表必须相同
- 修饰符:范围可以扩大 publi>protected>default>private
- 抛出的异常:范围可以缩小不能扩大
- 父类的功能,子类不一定需要,或者不一定满足
多态
- 多态就是一个父类可以指向多个子类
- 对象能执行那些方法,主要看左边的类型,虽然new的一样,执行的是子类的方法
- static方法不能重写,属于类,不属于实例
- final常量
- private方法
- instanceof来判断是否编译成功
static
- static静态的变量
- 静态直接使用类名来访问
- 非静态使用实例化的对象名字来访问
- 代码块顺序static>{}>public
- static{}只执行一次
- import静态导包可以直接用不需要方法.
抽象类
public abstract class lin(){ public abstract void a();};
- 不能new这个抽象类,只能靠子类去实现它,约束!
- 抽象类中可以写p't
接口
- 普通类:只有具体实现
- 抽象类:具体实现和规范(抽象方法)都有
- 接口:只有规范!无法写方法,面向接口编程
- 接口的本质是契约
- 声明类的关键词是class,声明接口的关键字是interface
- 接口中的所有定义其实都是抽象的
- void+名字(//返回值)
- 接口都需要有实现类
- 抽象类:extends
- 类可以实现接口implements接口
- 实现了接口的类必须要重写方法
public interface dem0 { void add(System name); void delete(System name); void updata(System name); void query(System name); }
public class usersevericImpl implements dem0 { @Override public void add(System name) { } @Override public void delete(System name) { } @Override public void updata(System name) { } @Override public void query(System name) { } }
- 多继承~利用接口实现多继承
接口的作用
- 约束
- 定义一些方法,让不同的人实现
- public abstract
- public static final
- 接口不能被实例化,接口中没有构造方法
- implements可以实现多个接口
- 必须要重写接口中的方法
内部类
- 1个Java可以有多个class类,但是只能有一个public calss
类 +变量名= new+类(); 变量名.内部类名 方法名 = 变量名.new 内部类方法();