类与对象

2018-07-18  本文已影响0人  JHW2017

1.类的定义
类由方法与属性(变量)组成

class Person{
    String name;
    int age; 
    public void tell() {
        System.out.println("姓名:" + name +",年龄:" + age);
    }
}

方法未加上static,因为方法将由对象调用,而不是与主方法定义在一个类中,有主方法直接调用,public表示可以被任何地方都可以访问。
2.对象的创建及使用
对象属于引用类型,分配内存与数组中相似

public class TestJava {
    Person per = new Person();  
    
}
class Person{
    String name;
    int age; 
    public void tell() {
        System.out.println("姓名:" + name +",年龄:" + age);
    }
}
Person per = null;
per = new Person();

3.引用传递

public class TestJava {
    public static void main(String[] args) {    
        Person per1 = new Person();  
        Person per2 = per1;
        per2.tell();
    }
}
class Person{
    String name;
    int age; 
    public void tell() {
        System.out.println("姓名:" + name +",年龄:" + age);
    }
}

Java垃圾回收机制回收释放不用的内存空间
4.封装性
面向对象形法则不允许队象直接访问属性,需要封装属性及方法.可使用Java反射机制利用getter和setter获取和设置属性。用private声明的属性和方法仅在类的内部使用。在类中,可按this.getname();

public class TestJava {
    public static void main(String[] args) {    
        Person per1 = new Person();  
        per1.setName("zheng");
        per1.tell();
    }
}
class Person{
    private String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String n) {
        name = n;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int n) {
        age = n;
    }
    public void tell() {
        System.out.println("姓名:" + name +",年龄:" + age);
    }
}

5.构造方法:对象实例化时就可以为属性赋值。
方法名与类名一致
构造方法不含返回类型声明且不返回值
若未定义构造方法,编译程序自动生成构造方法。若已经生成,则编译程序不再自动生成。构造方法可以重载。

public class TestJava {
    public static void main(String[] args) {    
          
        Person iio = new Person("zhang",30);
        iio.tell();
    }
}
class Person{
    private String name;
    private int age;
    public Person(String n,int a) {
        name = n;
        age = a;
    }
    public String getName() {
        return name;
    }
    public void setName(String n) {
        this.name = n;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int n) {
        this.age = n;
    }
    public void tell() {
        System.out.println("姓名:" + name +",年龄:" + age);
    }
}

6.匿名对象
一般匿名对象只能使用一次,只在堆内存中开辟空间,不存在栈内存的引用。使用后被垃圾回收机制收回。

public class TestJava {
    public static void main(String[] args) {    
          
        new Person().setName("zheng");
        new Person().tell();
    }
}
class Person{
    private String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String n) {
        this.name = n;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int n) {
        this.age = n;
    }
    public void tell() {
        System.out.println("姓名:" + name +",年龄:" + age);
    }
}
上一篇 下一篇

猜你喜欢

热点阅读