Java基础语法(五)

Java基础语法(五)

类与对象

一、面向对象

三大特性

  • 封装性:把对象成员属性和行为封装为一个整体;把不需要外界知道的信息隐藏起来,隐蔽对象的功能实现细节.
  • 继承性:
    被继承的类称为父类或超类,已经继承产生的类称为子类或派生类.
  • 多态性:
    • 方法重载:见上一章Java基础语法(四)
    • 对象多态:子类对象和父类对象可以进行相互的转换,而且根据其使用的子类的不同完成的功能也不同.

二、类与对象

类的基本组成

  • 成员属性(field): 用于保存对象的具体特征.例如,不同的人都有姓名、性别、年龄…
  • 方法(method): 用于描述功能.例如,跑步、吃饭…

类与对象的定义

使用class关键字定义类

class 类名称 {
	访问修饰符 数据类型 成员属性(变量);
	...
	public 返回值类型 方法名(参数类型 参数1, 参数2...) {
	...
	return ...;
	}
}

eg:

class Person {
	String name;	//成员属性:名字
	int age;	//成员属性:年龄
	
	public void tell() {
		System.out.println("姓名" + name + "年龄" + age);
	}
}

使用new声明并实例化对象

Person per = new Person();

分步定义

Person per = null;
per = new Person();

对象内存

Java属于引用数据类型,所有的引用数据类型在使用过程中都要通过关键字new开辟新的内存空间.

栈内存:保存的是对象的具体信息.

堆内存:保存的是一块堆内存的地址

垃圾产生与回收
每一个堆内存空间可以被不同的栈内存所引用;
每一个栈内存都能只能保存一个堆内存的地址信息,即如果一块栈内存已经存在有其他堆内存的引用,当需要改变引用时就需要丢弃原有的引用实体,更换为新的引用实体;
此时就会产生垃圾空间,所有的垃圾空间将等待GC(Garbage Collection) 不定期地进行回收释放.

注意:开发中尽量减少无用对象的产生,避免垃圾的产生.

三、封装

用法

- private 数据类型 变量名;
- private 返回值类型 方法名(参数列表) {};

按照Java的开发标准
使用set...(),get...()设置值和获取值.

eg

public class TestStudent {
    public static void main(String[] args) {

        //声明并实例化对象.
        Student stu = new Student();

        stu.setAge(22);
        stu.setName("chester");

        System.out.println(stu.getAge());
        stu.study();

    }
}
public class Student {
    //成员变量
    private String name;    //姓名
    private int age;    //年龄

    public void setAge(int a) {
        age = a;
    }

    public int getAge() {
        return age;
    }

    public void setName(String n) {
        name = n;
    }

    public String getName() {
        return name;
    }

    //成员方法
    public void study() {
        System.out.println(name + "加油学习!");
    }
}

四、构造方法和匿名对象

格式: 修饰符 构造方法名(参数列表) {}

要求:
1. 方法名与类名相同
2. 没有返回值
3. 没有返回值类型(连void也不能有)

注意:
1. 若无任何构造方法,则系统会给出默认无参构造;
2. 若存在有参构造,则系统不会给出无参构造,此时注意,程序里会缺少无参构造;
3. 构造方法可以重载.

eg

无参构造

class Student3 {
    private String name;
    private int age;

    public Student3() {}

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return this.name;
    }

    public int getAge() {
        return this.age;
    }
}

public class TestStudent3 {
    public static void main(String[] args) {
        //定义一个姓名为李四,年龄22的学生
        Student3 stu3 = new Student3();
        stu3.setName("张三");
        stu3.setAge(44);
        System.out.println(stu3.getName());
        System.out.println(stu3.getAge());
    }
}

带参构造

class Student3 {
    private String name;
    private int age;
    //定义无参构造函数
    public Student3(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return this.name;
    }

    public int getAge() {
        return this.age;
    }
}

public class TestStudent3 {
    public static void main(String[] args) {
        //定义一个姓名为李四,年龄22的学生
        Student3 stu3 = new Student3("张三",44);
        System.out.println(stu3.getName());
        System.out.println(stu3.getAge());
    }
}

五、this关键字

  • 当前类中的属性:this.属性;
  • 当前类中的方法;this.方法名();
  • 描述当前对象.

六、static关键字

类中的成员有普通成员(非static)和静态成员(static)
更多请见多态

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值