dd什么是面向对象
-
面向对象编程(Object-Oriented Programming, OOP)
-
本质:以类的方式组织代码,以对象的组织(封装)数据。
-
抽象
-
三大特性:封装、继承、多态
-
先有类后有对象。类是对象的模板。
创建与初始化对象
实例化一个对象
Student s1=new Student();//实例化
- 使用new关键字创建的时候,除了分配内存之外,还会给创建好的对象进行默认的初始化,以及对类中构造器的调用。
- 一个类即使什么都不写,也会存在一个默认的构造方法
public Person(){}
类与对象的区分
类:class的那个,里面种种属性,然后加各种构造器(快捷键Alt+Insert)
对象:是我们自己new的那个,但是其实自己取的名字只是个引用变量名,new Student()才是本质
构造器
alt+insert快捷键 构造器:1.和类名相同 2.没有返回值 作用:1.new本质在调用构造方法 2.初始化对象的值 注意点:1.定义有参构造之后,如果想使用无参构造,显示的定义一个无参的构造 (意思就是public Person(){}必敲)
可以在set方法中设置一些制约条件,来达到想要的输出:
public void setAge(int age) {
if (age>120||age<0){
this.age=3;
}else{
this.age = age;
}
}
s1.setAge(999);
System.out.println(s1.getAge());
超出范围只会输出3岁
内存分析
对象通过引用类型来操作:栈 - - ->堆
具体流程:先是运行堆的方法区,静态方法区static也和类一起加载,然后进入左边栈的main(),通过new对象来创建引用变量名,new的对象new pet()再次进入堆中,下面方法区给他们抛过去赋值或抛给他们方法。
静态方法区static:有静态static的方法可以直接被调用(和类一起加载,可以直接抛上去),没有的需要重新new一个对象
public static void main(String[] args) {
int add=Demo03.add(6,9);
System.out.println(add);
//new Demo03().add(3,8);
//System.out.println(add);
}
public static int add(int a, int b){
return a+b;
}
封装
遵循“高内聚,低耦合”。高内聚就是类的内部数据细节由自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。
private,设置get/set(Alt+Insert)
public class Student {
//属性私有
private String name;
private int id;
private char sex;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
通过调用get/set来获取属性