Java面向对象(218)面向对象的特点1

217课程回顾:
一:类和对象

  1. 类:一类事物统称
  2. 对象:实例
  3. 创建类:
public class Person{
		//属性
		String name;
		Int age;
		//行为
		public void work(){  }
}
  1. 创建类的对象:
    Person p;------声明
    P = new Person(); -------实例化

Person p = new Person();
p,name=”zhangsan”;
p.work();
218课程开始:
一. 类的成员之一:属性

  1. 对象的属性,也称为成员变量,又称为实例变量。

  2. 对象属性的初始化,即初始赋值,有以下两种方法:
    默认初始化赋值:对象被创建时,不同类型的属性首先被赋予不同的缺省值。
    显示初始化赋值:如果在类中声明属性时指定了初始值,那么在对象被创建时,相应的属性就被显示地赋予此初始值。

  3. 语法格式:修饰符 数据类型 属性名 = 初值;

  4. String引用类型 初始值为null

  5. 习题:

class Test(){
	String  name;
	int age;
	double money;
	int id;
public static void main(String[] args){
	Test t = new Test();
	t.name = ”zhangsan”;
	t.id = 20;
	system.out.print(t.name);
system.out.print(t.id);
system.out.print(t.age);
system.out.print(t.money);
}
}

结果为:zhangsan 20 0 0.0
在这里插入图片描述
二. 对象

  1. 对象的产生:
class Person{
	int age;//栈(由操作系统自动分配释放,用于存放函数的参考值、局部变量等)
	void shout(){
	system.out.println(“oh,my god!I am ”+age);
}
}
Person p1 = new Person();//堆(由开发人员分配和释放,若开发人员不释放,程序结束时由OS回收)
  1. 对象的使用
class TestPerson(){
public static void main(String[] args){
		Person p1 =new Person();
		Person p2 =new Person();
		p1.age=-30;
		p1.shout();
		p2.shout();
}
}

三. 变量的分类:

  1. 成员变量(全局变量):实例变量(不以static修饰) ; 类变量(以static修饰);(常量)
  2. 局部变量:形参(方法签名中定义的变量) ; 方法局部变量(在方法内定义) ; 代码块局部变量(在代码块内定义)
  3. 注意:两者在初始值方面的异同:
    同:都有生命周期。 异:局部变量除形参外,需显示初始化。
  4. 在方法体外,类体内声明的变量称为成员变量。
    在方法体内部声明的变量称为局部变量。
    四. 例:
public class Student {

	String name; //实例成员变量
	int age; //实例成员变量
	int id; //实例成员变量
	String gender; //实例成员变量
	boolean b; //实例成员变量
	
	static double score;//类变量不属于对象属于类
	
	public static void main(String[] args) {
		Student s1=new Student();
		s1.age=20; //实例成员变量(需要实例化才能访问)
		s1.score=100; 
		System.out.println(s1.score + “ ”+s1.age);//100.0  20
		
		Student s2=new Student();
		s1.score=200;
		s2.age=30;
		System.out.println(s1.score+ “ ”+s1.age);//200.0  20
		System.out.println(s2.score+ “ ”+s2.age);//200.0  30
	}
}  运行结果: 100.0  20       200.0  20       200.0  30

五. 成员变量(属性)和局部变量的区别

  1. 成员变量:成员变量定义在类中,在整个类中都可以被访问。
    成员变量分为类成员变量和实例成员变量,实例变量存在于对象所在的堆内存中。
    成员变量具有默认初始化值。
    成员变量的权限修饰符可以根据需要,选择任意一个。
    2. 局部变量:局部变量只定义在局部范围内,如:方法内,代码块内等。
    局部变量存在于栈内存中。
    作用的范围结束,变量空间会自动释放。
    局部变量没有默认初始化值,每次必须是显示初始化。
    局部变量声明时不指定权限修饰符
    六. 面向对象特征之一:封装和隐藏
    使用者对类的内部定义的属性(对象的成员变量)的直接操作会导致数据的错误、混乱或安全性问题。
    (因该将legs属性保护起来,防止乱用。保护方式:信息隐藏。 问题:xb.legs=-1000;)
public class Animal {
	public int legs;
	public void eat(){
		System.out.println("eating");
	}
	public void move(){
		System.out.println("Moving");
		}	
}
public class Zoo {

	public static void main(String[] args) {
		Animal xb = new Animal();
		xb.legs=4;
		System.out.println(xb.legs);
		xb.eat();xb.move();
	}
}

信息的封装和隐藏

public class Animal {
	private int legs;//将legs定义为private只能被Animal类访问

	public int getLegs() {
		return legs;
	}

	public void setLegs(int i) {
		if(i!=0&&i!=2&&i!=4){
			System.out.println("Wrong number of legs!");
			return;
		}
		legs=i;
	}
}
public class Zoo {

	public static void main(String[] args) {
		Animal xb = new Animal();
		xb.setLegs(4);
		//xb.legs=-1000; //非法
		System.out.println(xb.getLegs());
	}
}

在这里插入图片描述在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值