Java:class4 类和对象

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_43336822/article/details/95598730

1.类:定义一个学生类,学生类主要由两部分组成

属性:(是什么) class People{
姓名 String name;
年龄 int age; //属性:字段/成员变量/实例变量
学号

行为:(我能干什么)
吃饭
睡觉 void eat(){} //行为:方法
学习 }

实例化:People p=new People(); //开辟了内存

构造方法:People(){} //不能加void等,即不能有返回值

2 .new:
1).堆上开内存
2).调用构造方法初始化实例变量

3.局部变量未初始化则不能使用;成员变量未初始化可以使用。

4.一个源文件里不能有多个public class。

5.CMD中可以用jps查看进程。

6.定义的方法中的变量不占堆中的内存。
class Student{
//类头:占8字节
int age=20; //占8字节
}

7.构造方法:如果没有构造方法,系统自动提供一个无参的构造;而自己写了一个构造方法,系统则不再提供。
1). 构造函数的名称必须与类名相同,包括大小写;
2). 构造函数没有返回值,也不能用void修饰. 如果不小心给构造函数前面添加了返回值类型,那么这将使这个构造函数变成一个普通的方法,在 运行时将产生找不到构造方法的错误。
3. 一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
4. 构造方法可以重载,以参数的个数,类型,顺序

8.访问限定符:
public:公有的,谁都可以用。
private:私有的,只能在当前类中使用。
package:同包路径可以访问,是默认值。非同包时在当前类开头写入:import.package.src2 (package.src2是要引用类的路径)

9.方法中可以用this关键字:代表当前传进来的对象。 //存在命名冲突时,必要加this关键字,指明为当前对象

10.字符串传入函数,函数中记得加入if(str==null) return;

11.对象的拷贝:用clone(),需要在类中加入对Object的clone()方法重写:
而且在class cat 后要加上implements Cloneable。
1)浅拷贝,存在内存共享,修改其中一个的属性会改变另一个。在类中如果只有int 和String类型的属性时,用这个就可以。
class Address implements Cloneable{
int id;
}
}
protected Object clone() throws CloneNotSupportException{
return super.clone();
}
2) 深拷贝,消灭了内存共享。在类中如果包含自己定义的一些属性,要用这个,否则有内存共享。

class Address implements Cloneable{
        int id;
        @Override              //需要对这个特有的属性也进行clone的重载
        protected Object clone() throws CloneNotSupportedException {
            return super.clone();
        }
    }
    class Cat implements Cloneable{
        int age;
        Address address = new Address();
        @Override
        protected Object clone() throws CloneNotSupportedException {
        Object o =  super.clone();//
        Cat c = (Cat)o;
        c.address = (Address) this.address.clone();
        return c;  //返回的是对象
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_43336822/article/details/95598730