面向对象--封装、继承、多态

1. 面向对象的概念

  • 面向对象:封装
    -类内部行为自己控制,别人无法干涉
    本身方法等 自身决定

  • 面向对象:继承
    子类复用父类的描述信息和行为
    父类/基类:哺乳动物类
    子类/派生类:人类

  • 面向对象:多态
    哺乳动物类:人类、马类
    人类和马类 鸣叫行为不一样,称为多态

2.定义类

  • 方法、变量小写开头。 类大写开头
  • 成员变量是:private; 成员方法是:public ; 不要加static
public class Person {
	//成员变量 一般是private
	private int age;
	private String name;
	// 成员方法  一般是public
	//设置年龄
	public void setAge(int value)
	{
		this.age=value;
	}
	
	//设置名字
	public void setName(String value)
	{
		this.name=value;
	}
	
	//读取名字+年龄
	public void sayHello()
	{
		System.out.println("我的名字是"+this.name+",我的年龄是"+this.age);
	}
}

3.对象的创建和调用方法

定义类的变量,指向初始化的对象,调用方法

public class Main {

	public static void main(String[] args) {
		// 定义变量p 指向一个初始化对象
		Person p=new Person();
		//调用成员变量和成员方法
		p.setAge(30);
		p.setName("小伟");
		p.sayHello();
	}

}

4.对象之间是相互独立的

相同类的对象之间 或者不同类的对象之间都是相互独立的

public static void main(String[] args) {
		// 定义变量p 指向一个初始化对象
		Person p=new Person();
		//调用成员变量和成员方法
		p.setAge(30);
		p.setName("小伟");
		p.sayHello();
		
		//定义新对象。p和p1 这两个变量指向的对象互不影响
		Person p1=new Person();
		p1.setAge(33);
		p1.setName("林志颖");
		p1.sayHello();
		
		//重新调用p指向的对象的方法
		p.sayHello();

5.通俗方法讲变量和对象

1个变量只能指向一个对象
如果变量指向对象变了,那么之前所指向对象的关系删除

public class Main {

	public static void main(String[] args) {
		// 定义变量p 指向一个初始化对象
		Person p=new Person();
		//调用成员变量和成员方法
		p.setAge(30);
		p.setName("小伟");
		p.sayHello();
		
		//定义新对象。p和p1 这两个变量指向的对象互不影响
		Person p1=new Person();
		p1.setAge(33);
		p1.setName("林志颖");
		p1.sayHello();
		
		
		// p2 指向 p1变量所指向的对象
		Person p2=p1;
		p2.setAge(66);
		p2.setName("周润发");
		p2.sayHello();
		p1.sayHello();
	}

}

6 给方法传变量

传递给方法的参数变量本身是拷贝。
public class Main {

public static void main(String[] args) {
	// 定义变量p 指向一个初始化对象
	Person xiaowei=new Person();
	//调用成员变量和成员方法
	xiaowei.setAge(30);
	xiaowei.setName("小伟");
	xiaowei.sayHello();
	//调用方法,改变变量的值
	test(xiaowei);
	xiaowei.sayHello();
	
}

// 定义一个方法,注意是要加static 
static void test(Person p)
{
	p=new Person();
	p.setAge(888);
}

}

7成员变量和局部变量

必须初始化,对象初始化为null
NullPointerException --空指针

8 深入理解this

  • Person 类
package com.test;

public class Person {
	
	private int age;
	private String name;
	private int height;
	private String gender;
	
	public void setAge(int age)
	{
		this.age=age;
	}
	
	public int getAge()
	{
		return this.age;
	}
	
	public void setName(String name)
	{
		this.name=name;
	}
	
	public String getName()
	{
		return this.name;
	}
	
	public void setHeight(int height)
	{
		this.height=height;
	}
	
	public int getHeight()
	{
		return this.height;
	}

	public void setGender(String gender)
	{
		this.gender=gender;
	}
	
	public String getGender()
	{
		return this.gender;
	}
	
	
	public void  sayHello()
	{
		System.out.println("my name is "+this.name+",我的年龄是"+this.age+",我的身高是"+this.height+",我的性别是"+this.gender);
	}
	
	public boolean isSamePeople(Person p)
	{
		return this.age==p.age&&this.name.equals(p.name)  
				&& this.height==p.height &&this.gender.equals(p.gender);
	}
}
  • main函数
package com.test;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Person p1=new  Person();
		p1.setAge(18);
		p1.setGender("girl");
		p1.setHeight(175);
		p1.setName("xiaowei");
		p1.sayHello();
		
		
		Person p2=new  Person();
		p2.setAge(18);
		p2.setGender("girl");
		p2.setHeight(175);
		p2.setName("xiaowei");
		p2.sayHello();
		
		
		Person p3=new  Person();
		p3.setAge(38);
		p3.setGender("boy");
		p3.setHeight(159);
		p3.setName("zhangsan");
		p3.sayHello();
		
System.out.println(p1.isSamePeople(p2));
System.out.println(p2.isSamePeople(p3));



	}

}

9 private 和public

类中 成员变量一般用private 成员方法是public
成员变量的值设定或者取得一般用 set 和get public方法

猜你喜欢

转载自blog.csdn.net/weixin_43251783/article/details/83386354