面向对象
Posted xgbbd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象相关的知识,希望对你有一定的参考价值。
面向对象含义
Java的核心思想就是OOP(面向对象编程)
OO:面向对象
面向过程:线性思维
面向对象:分类思维
面向过程和面向对象不可分割,面向对象相当于一个框架,面向过程相当于具体执行流程
抽象:把共性抽取出来 抽"像"
方法的定义及调用
静态方法:加static 的方法
静态方法可直接通过类名进行调用
非静态方法需要把类进行实例化
new Student()代表把类实例化了,.say()相当于调用了其中的方法
一般形象的写为如下方式:
Student student = new Student(); 快捷键:new Student()+alt+enter
public class Demo1 {
//main方法 用于启动当前程序
public static void main(String[] args) {
}
//static是和类一起加载的,即类存在的时候它就存在了
public static void a(){
b(); //一个已经存在的调用不存在的会报错,所以这里调用b()的时候会报错
}
//b()是类实例化之后才存在的
public void b(){
}
}
方法中,实际参数和形式参数的类型要对应
值传递和引用传递:
Java中都是值传递
//值传递 只是把值传给了形参
public class Demo2 {
public static void main(String[] args) {
int a = 1;
System.out.println(a); //1
Demo2.change(a);
System.out.println(a); //1
//因为方法中的形参并没有返回一个结果,它的返回值为空
}
//返回值为空
public static void change(int a){
a = 10;
}
}
//引用传递 一般是传递一个对象 本质还是值传递
//一个类里面只能有一个public class,但是可以有多个class
public class Demo3 {
public static void main(String[] args) {
Person person = new Person();
System.out.println(person.name); //null
Demo3.change(person);
System.out.println(person.name);
}
public static void change(Person person){
//Person是一个对象,指向Person person = new Person(); 这是一个具体的人,可以改变属性
//本质还是在传递值,把xg传递给了对象的属性
person.name = "xg";
}
}
class Person{
String name;
}
类与对象
构造器
在IDEA下查看编译后的class文件
可以观察到在class文件中默认添加了一个方法,且这个方法没有返回值
进行debug调试发现,构造器走完了才生成对象,输出person.name
alt + insert ---> Constructor生成构造器
选择Select None 生成无参构造函数
按住ctrl可进行多选
构造器:
- 和类名相同
- 没有返回值
作用:
- new 本质是在调用构造方法
- 初始化对象的值
注意点:定义的有参构造,若想使用无参构造,需显示定义
以类的方式组织代码,以对象的方式封装数据
创建对象内存分析
总结
-
类与对象
类是一个模板,抽象的,对象是一个具体的实例
-
方法
定义、调用
-
对象的引用
引用类型:除开基本类型(8)之外的
对象是通过引用来操作的,就是内存栈中的,真实对象是在堆里面的(引用就是指向对象的一个地址)
-
属性:字段Field 成员变量
? 默认初始化:
? 数字:0 0.0
? char:u000
? boolean: false
? 引用:null
? 除开基本类型之外的统统为null
? 修饰符 属性类型 属性名 = 属性值;
-
对象的创建和使用
--必须使用new 关键字创建对象,创建对象还需要有构造器
? --对象的属性 xg.name
? --对象的方法 xg.sleep()
-
类(类中只有这2个):
静态的属性 属性
动态的行为 方法
以上是关于面向对象的主要内容,如果未能解决你的问题,请参考以下文章