JAVA学习-面向对象(一)
2021-01-24 16:13
标签:image 信息 目的 建立 耦合 oid sys 习惯 产生 这个篇目主要针对类和对象的赋值使用、内存中的样子、值传递等进行总结。关注面向对象的封装性 类:类是一种模板,抽象层面的东西,描述一类事物的状态和行为,JAVA实现类时,其中包含了属性(字段)和方法 对象:是一个具有自己特点的实例,具体层面的东西,描述了该对象的状态和行为 JAVA中的成员方法、属性要严格按照类、属性为前缀去调用!!!,更好理解面向对象 对象赋值其实是两个引用指向了同一个对象,通过其中一个操作对象,另一个去访问时也会发生变化! 当堆中对象无引用时(相当于不能访问到了),JAVA就会自动回收这片内存,类似C的释放空间 写法 当没显示提供构造函数时,编译器默认提供一个隐式无参的构造函数,空的,什么都不干,只是为了能调用 一旦自己写了构造函数,默认提供的隐式无参构造函数就无了,一个好的习惯是,无论何时自己写一个无参的构造方法,保留这个无参构造器 构造器可以重载 用 this在语义上可看成"本对象的xxx",是对象层面的东西,this关键字指向的是当前对象的引用,只有实例化后才会真正存在! 当用到this时,可假想一下该类被实例化成对象时调用自己的一些东西,这个this就是此时实例化的对象 static是静态修饰符,把变量、属性变为类这一层次的东西!内存和值跟随类创建销毁,可以直接用类名调用 使用static关键字修饰一个属性:声明为static的变量实质上就是全局变量,其内存是随类产生销毁的,高于对象层次 使用static关键字修饰一个方法:在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法(类调用) 限制: 它们仅能调用其他的static 方法,反过来是可以的(普通方法可访问static方法) 它们不能以任何方式引用this或super。因为this是对象层次的,甚至没创建对象就调用static,哪来this 不允许用来修饰局部变量 JAVA本质都是值传递,相当于形参是单独开辟了一个空间,把实参的值拷贝过来而已,在函数中修改参数,实际上是修改的形参的值,实参不会变 而引用传过去后,虽然也是拷贝了一个引用,但实参和形参指向了同一个对象,所以通过形参引用去修改对象,实参那里也会反应出来(就和指针一样的) 用一个Main类来作为程序入口,组织主要逻辑。其他类不要包含main方法,不然会搞得特别混乱! 目的:高内聚,低耦合 表现:数据隐藏,对外提供接口来取得数据,以及带条件的操作数据 好处:模块化、信息隐藏、代码重用、插件化易于调试、具有安全性 实现:访问权限符+set/get方法 访问权限符: 其中package即默认值,当不写的时候就是package JAVA学习-面向对象(一) 标签:image 信息 目的 建立 耦合 oid sys 习惯 产生 原文地址:https://www.cnblogs.com/Burning-Yu/p/12865424.htmlJAVA学习-面向对象(一)
一.类和对象
二.实例化
new
关键字从类模板实例化一个对象,建立了类和对象之间的联系其做了几件事:
引用 = null
可以帮助释放内存三.构造器
public class Student{
String name;
int age
//构造函数,无返回值,用类名作为函数名字
Student(){
}
//有参构造,重载
Student(String name){
this.name = name;
}
//this()调用其他构造函数,但必须有出口!
Student(String name, int age){
this(name);
this.age = age
}
}
this()
来调用其他构造函数,但必须写在构造器的第一行四.this关键字
五.static关键字
public class Main{
public static void main(){
//在该类中想调用该类资源,只能调用static的属性和方法
Main.test();
Main.name = "change";
//绝不运行用this!!!
}
public static int name = "这是一个静态方法"
public static void test(){
System.out.println("这是一个静态方法");
}
}
它们只能访问static数据。六.传参
public class Main{
public static void main(){
}
}
七.程序结构
八.封装
class Person{
//属性是成员变量,私有化属性,使得其他对象不能直接访问属性
private String name;
private int age;
//参数及方法内定义的变量是局部变量
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
}