Java面向对象(二)

构造方法

  1. 特点
    构造方法的名字和类名相同
    构造方法的修饰符,只有访问权限修饰符
    没有返回值类型或void

  2. 举例

public class Student {

	// 属性(成员变量)

	String name;

	int age;

	String clazz; // 班级

	String hobby; // 爱好

	
	// 无参的构造方法,创建对象,系统给对象的属性赋默认值

	public Student() {}

	// 有参的构造法,创建对象、显示地初始化对象的属性

	// 局部变量:方法中定义的变量、方法形参列表中的变量

	public Student(String name, int age) {

		// 将形参的值赋值给对象的对应的属性

		/*

		 * 当方法中的局部变量的名字和成员变量名相同,会在方法中隐藏成员变量,

		 * 此时,通过this关键字可以访问到被隐藏的成员变量

		 */

		this.name = name; // this:当前对象

		this.age = age;

	}

	// 成员方法:输出学员信息

	public void showMsg() {

		System.out.println(name);

		System.out.println("年龄:" + age);

		System.out.println("就读于:" + clazz);

		System.out.println("爱好:" + hobby);

	}

}

public class Computer{

	// 无参的构造方法

	public Computer(){}

}

作用 创建对象,初始化对象的属性。
调用:new 构造方法名();

  1. 方法的重载
    方法的重载:在同一个类中,出现方法名相同、方法的参数列表不同的现象,与方法的其他修饰符无关,称为方法的重载。
    参数列表的不同表现为:1,参数的个数 2,参数的数据类型,3,参数的顺序
public int add(int a, int b) {

		return a+b;

	}

	

	public double add(double a, int b) {

		return a+b;

	}

	

	public double add( int b,double a) {

		return a+b;

	}

	

	public int add(int a, int b,int c) {

		return a+b+c;

	}
  1. this关键字
    (1)代表本类的当前对象
    在这里插入图片描述

(2)使用场景
1,有参数的构造方法中 2,非静态的成员方法
3,不能出现静态方法中
静态方法的访问,不需要通过对象来访问,直接通过类名访问。
this若可以出现在静态方法中,this指向的是本类的当前对象。
通过类名访问静态方法,没有对象指向this的。
5. static关键字
static:静态的
1、可以修饰成员变量、成员方法、内部类(了解),补充:方法一定写在类里面,类中的方法只有成员方法、构造方法
2、成员变量
(1)静态成员变量(类变量):用static修饰成员变量
特点:
属于类,不属于对象,对于所有的对象,都可以访问,相当于公共资源,
若某一个对象将其修改,其他对象再访问,其值是被修改后的值。
不需要创建对象,通过类名可以直接访问,通过对象也可以访问(不建议)
随着类的加载(类的加载在运行之前的一个过程)而产生
(2)非静态成员变量(实例变量):没有用static修饰成员变量
属于对象的
不同对象的实例变量之间互不影响
必须创建对象,通过对象名去访问
随着对象的创建而产生,随着对象的销毁而销毁
总结:
静态成员通过类名课直接访问。当然,通过对象也可访问(不建议)
非静态成员必须先创建对象,通过对象访问。
this关键字
代表本类的当前对象,
出现的位置:有参的构造方法、非静态成员方法
this不可以出现在静态方法,why?
this代表当前对象,静态方法中不存在当前对象。
如果方法中直接访问了实例变量,该方法必须是实例方法。

public class Student {

    // 属性(成员变量)

    // 静态成员变量(类变量)

    static String school = "西安交通大学";

    // 非静态成员变量(实例变量)

    String id;

    String name;

    char sex;

    int age;



    // 构造方法(无参)

    public Student() {

    }



    // 构造方法(有参)

    public Student(String id, String name, char sex, int age) {

        this.id = id;

        this.name = name;

        this.sex = sex;

        this.age = age;

    }



    // 成员方法(非静态)

    public void showMessage() {

        System.out.println("学校:" + Student.school); // 访问本类的静态成员变量



        System.out.println("学号:" + this.id);

        System.out.println("姓名:" + this.name);

        System.out.println("性别:" + this.sex);

        System.out.println("年龄:" + this.age);

    }



    public static void main(String[] args) {

        // 静态成员变量

        System.out.println("1、学校:" + school); // 访问本类的静态成员变量(本类中课省略类名)

        Student stu1 = new Student("1001", "田浩丘", '男', 22);

        stu1.school = "西北工业大学";

        System.out.println("2、学校:" + school);

        System.out.println("3、学校:" + stu1.school);

        Student stu2 = new Student("1002", "王禹婷", '女', 20);

        System.out.println("4、学校:" + stu2.school);

        System.out.println("==============================");

        // 非静态成员变量

        System.out.println();

        System.out.println("stu1 学号:" + stu1.id);

        System.out.println("姓名:" + stu1.name);

        stu1.id = "1004";

        System.out.println("stu1 学号:" + stu1.id);

        System.out.println("stu2 学号:" + stu2.id);


        stu2.showMessage();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值