随堂笔记6
随堂笔记6
面向对象编程
-
面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据
-
抽象
-
三大特性:封装,继承,多态
方法的调用以及对象创建调用
-
可以调用不同package(包)中不同类(class)的函数,加有static关键字可直接调用,其它的只能通过new一个对象将函数实例化,通过调用实例化对象调用函数
-
无static函数
//Student类
package com.yyl.oop;
public class Student {
public void say(){
System.out.println("学生说话了");
}
}//主函数demo01
package com.yyl.oop;
public class demo01 {
public static void main(String[] args) {
//对象类型 对象名字 =对象值;此处对象值为一个实例化对象
Student student=new Student();
//student代替Student类
student.say();
}
} -
带有static函数的
//Student类
package com.yyl.oop;
public class Student {
public static void say(){
System.out.println("学生说话了");
}
}//主函数demo01
package com.yyl.oop;
public class demo01 {
public static void main(String[] args) {
Student.say();
}
} -
static区分
-
带有static:和类一起加载的,类存在函数就存在
-
不带static:类实例化之后才存在
-
-
实例化即new一个新对象代替原函数
引用传递
-
引用传递传递一个对象(相当于c语言传递一个指针)
1、值传递
在方法的调用过程中,实参把它的实际值传递给形参,此传递过程就是将实参的值复制一份传递到函数中,这样如果在函数中对该值(形参的值)进行了操作将不会影响实参的值。因为是直接复制,所以这种方式在传递大量数据时,运行效率会特别低下。//参考计算机系统基础的栈理论
2、引用传递
引用传递弥补了值传递的不足,如果传递的数据量很大,直接复过去的话,会占用大量的内存空间,而引用传递就是将对象的地址值传递过去,函数接收的是原始值的首地址值。在方法的执行过程中,形参和实参的内容相同,指向同一块内存地址,也就是说操作的其实都是源数据,所以方法的执行将会影响到实际对象。
public class demo02 {
public static void main(String[] args) {
Person student=new Person();
System.out.println(student.name);//输出“null”
change(student);
System.out.println(student.name);//输出“阿deair”
}
public static void change(Person student){//引用传递,传递一个类
student.name="阿deair";//传递类可以改变类的值
//解释:相当于传递对象的地址(指针)
}
}
class Person{//定义一个类,注意在类的外面
String name;//默认初始化为null
}
类与对象的创建
-
创建类
package com.yyl.oop2;
public class student {
String name;
int age;
String num;
int grade;
public void study(){
System.out.println(this.name+"在学习");//引用自己类的变量this.变量名
}
} -
声明对象和调用
package com.yyl.oop2;
public class demo01 {
public static void main(String[] args) {
//类:抽象的,实例化
//类实例化后会返回一个自己的对象
//xiaoming对象就是student类的具体实例
student xiaoming=new student();
xiaoming.name="小明";
xiaoming.age=10;
System.out.println(xiaoming.name);
System.out.println(xiaoming.age);
}
}
-
总结:相当于c语言中的结构体+java的包与类的作用
注意声明类的时候保持类的名字和创建时的名字保持一致,否则调用时会有问题
构造器
-
-
构造器作用:new的本质就是调用构造器,有参构造可以用于初始化
package com.yyl.oop2;
public class demo02 {
public static void main(String[] args) {
student02 xiaoming=new student02("xiaoming");//默认无参构造器,不需要传递初始值
System.out.println(xiaoming.name);
}
}
package com.yyl.oop2;
public class student02 {
//一个类即使什么也不写,他也会存在一个类
String name;
//默认无参构造器,不需要传递参数,系统自动生成
public student02(){}
//自定义构造器,需传递对应类型参数,一般用于初始化
//一旦定义有参构造器,无参就必须显示定义(删除有参构造?)
public student02(String x){
this.name=x;
}
}