成员属性和成员方法

面向对象实现对客观实体的直接映射,抽象出同一类实体共有的行为特征就是类。而类体主要包含两大部分:成员变量成员方法
类也可以嵌套,嵌套在另一个类定义中的类是内部类,而含有内部类的类是外部类

成员变量

类的成员变量就是类的属性,它描述了类的特征

而成员变量有两种形式:类变量和实例变量
前者是静态的(static),后者是非静态的

成员属性

出现在类体中,方法之外的就是成员属性
而成员属性和成员变量的区别是什么呢

类的成员变量定义在方法外可以被类方法访问的是成员变量。按照java的编码规范,成员变量一般被定义成private权限。

类的属性类的成员变量中,外界可以通过set方法和get方法对成员变量进行操作,那么这个成员变量就是类的属性。

不同对象的属性类型是一样的 ,只是属性的值不一样,所以我们说类是模板而对象是实例
要有具体的对象才能有具体的值,给成员属性赋值时,应该发生在对象生成以后
引用所保存的的是对象的首地址 ,如果没有生成对象 ,则保存的是null
会造成空指针异常
若类中有未赋值的成员属性,系统默认给赋初值
int – 0 string – null 只要是引用数据类型都为null

听课自己照着模板敲代码

public class Name
{
	public static void main(String[] args) 
	{
		Person p = new Person();
		p.name = "tx";
		p.age = 19;
		System.out.println(p.name);
		System.out.println(p.age);
	}
}

然后调试发现
D:\ediplus>javac Name.java
Name.java:5: 错误: 找不到符号
Person p = new Person();
^
符号: 类 Person
位置: 类 Name
Name.java:5: 错误: 找不到符号
Person p = new Person();
^
符号: 类 Person
位置: 类 Name
2 个错误

光顾着抄,没发现new的对象都不是根据类来的,因此会报错
然后自己改了代码

public class Person
{
	public static void main(String[] args) 
	{
		Person p = new Person();
		p.name = "tx";
		p.age = 19;
		System.out.println(p.name);
		System.out.println(p.age);
	}
}

但仍然报错

D:\ediplus>javac Person.java
Person.java:6: 错误: 找不到符号
                p.name = "tx";
                 ^
  符号:   变量 name
  位置: 类型为Person的变量 p
Person.java:7: 错误: 找不到符号
                p.age = 19;
                 ^
  符号:   变量 age
  位置: 类型为Person的变量 p
Person.java:8: 错误: 找不到符号
                System.out.println(p.name);
                                    ^
  符号:   变量 name
  位置: 类型为Person的变量 p
Person.java:9: 错误: 找不到符号
                System.out.println(p.age);
                                    ^
  符号:   变量 age
  位置: 类型为Person的变量 p
4 个错误

最后

public class Person
{
	String name;
	int age;
	public static void main(String[] args) 
	{
		Person p = new Person();
		p.name = "tx";
		p.age = 19;
		System.out.println(p.name);
		System.out.println(p.age);
	}
}

才通过

直接访问成员属性是很危险的行为,这样别人很很轻易地改变成员属性的值
成员属性是要有private修饰的,这样才不会被通过对象来直接访问

类中直接定义的方法都叫做成员方法。类中的方法是行为,它是对象的具体的行为方式,这些东西要能够让对象去操作。方法一般为public的,是对外公开的。我们往往通过公开给外界的方法去访问和操作对象私有的成员属性。这也叫作接口,对外提供接口,用以操作和访问对象的成员属性

如何操作成员属性

对于私有的成员属性,我们有两个操作。数据是不是就只有两个操作:
1. 设置值 set() set的时候,一般情况下不用返回值
2. 获取值 get() get的时候,要根据所要获得的数据类型来确定返回值类型,一定要对应
自己有尝试这么用

public class Person
{
	private int id;
	private String name;
	public static void setId(int pid) 
	{
		id = pid;
	}
    public int getId(){
		return id;
	}
	public static setname(String pName)
	{
		name=pName;
	}
	public String getName()
	{
		return name;
		}
}

class  Test
{
	public static void main(String[] args) 
	{
		Person p = new Person();
		p.setId(20);
		int pId = p.getId();
		System.out.println(pId);
		p.setName("某欣");
		String pName = p.getName();
		System.out.println(pName);
	}
}

报错

                 ^
  符号:   方法 setName(String)
  位置: 类型为Person的变量 p
Test.java:10: 错误: 找不到符号
                String pName = p.getNAme();
                                ^
  符号:   方法 getNAme()
  位置: 类型为Person的变量 p
.\Person.java:6: 错误: 找不到符号
                p.name = "tx";
                 ^
  符号:   变量 name
  位置: 类型为Person的变量 p
.\Person.java:7: 错误: 找不到符号
                p.age = 19;
                 ^
  符号:   变量 age
  位置: 类型为Person的变量 p
.\Person.java:8: 错误: 找不到符号
                System.out.println(p.name);
                                    ^
  符号:   变量 name
  位置: 类型为Person的变量 p
.\Person.java:9: 错误: 找不到符号
                System.out.println(p.age);
                                    ^
  符号:   变量 age
  位置: 类型为Person的变量 p
8 个错误
public class Person
{
    private int id;
    private String name;
    public  void setId(int pid)
    {
        id = pid;
    }
    public int getId(){
        return id;
    }
    public void setName(String pName)
    {
        name=pName;
    }
    public String getName()
    {
        return name;
    }
}
class  Test
{
    public static void main(String[] args)
    {
        Person p = new Person();
        p.setId(20);
        int pId = p.getId();
        System.out.println(pId);
        p.setName("某欣");
        String pName = p.getName();
        System.out.println(pName);
    }
}

这样就可以了,将static去掉,不然无法找到name、id

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值