java 面向对象练习1

/*

  • java面向对象
  • 三条主线
  • 1,java类以及类的成员
  • 类的成员:属性,方法,构造器,代码块,内部类
  • 2,面向对象的三大特征
  • 封装性(Encapsulation),多态性(Polymorphism),继承性(Inheritance),(抽象性abstractness)
  • 3,其他关键字的使用
  • this,super,static,final,abstract,interface,package,import

  • */

/*

  • 面向对象(OOP Object Oriented Programming)与面向过程(POP Procedure Oriented Programming)比较
  • 1,两者都是一种思想,面向对象是相对于面向过程而言,面向过程,强调功能行为,以函数为最小单位,考虑怎么做。
  • 面向对象,将功能封装进对象,强调具备了功能的对象,以类/对象为最小单位,考虑由谁来做。
  • 2,面向对象更强调运用人类日常思维逻辑所采用思维方法与原则,例如抽象,分类,继承,聚合,多态
  • 举例子:实现“人把水果装入冰箱”。
  • 一,面向过程:
  • 1,打开冰箱门
  • 2,拿起水果,放入冰箱
  • 3,关闭冰箱门
  • 二,面向对象
  • 1,对象:人—步骤1:打开(对象1:冰箱)门,:步骤2:拿起(对象2:水果),步骤3:关闭(对象1:冰箱)门
  • 2,对象1:冰箱—功能1:可以打开,功能2:可以关闭
  • 3,对象2:水果—功能1:可以被拿起
  • 实例化对象后,对相关对象调用相应功能实现设计目的。
  • 面向对象的设计思想
  • 一.程序员由面向过程中的执行者转为面向对象的指挥者
  • 二,面向对象分析问题的步骤:
  • 1,根据问题需要,选择问题针对的现实世界的实体。
  • 2,从实体寻找解决问题相关的属性和功能,这些属性和功能演变成概念世界中的类
  • 3,将抽象的实体用计算机语言描述,形成计算机世界中类的定义,即借助某种程序语言,
  • 把类构造成计算机可以识别和处理的数据结构
  • 4,将类实例化成计算机世界中的对象,对象是计算机世界中解决问题的最终工具
  • 例子
  • 售票员统计车票的金额
  • 售票员与车票可以是类
  • 统计动作是售票员的方法,金额是车票里的一个数据
  • 一般名词可以创建类,动词为类中的方法
    */

/*

  • 面向对象的两个要素:
  • 类(class)和对象(Object)是面向对象的核心概念,万事万物皆是对象
  • 1类是对一类事物的描述,是抽象的概念上的定义
  • 2对象是实际存在的该类事物的个体,因而也称为实例(Instance).
  • 抽象的人=类,具体的某个人=对象
  • 面向对象的程序设计重点是对类的设计
  • 而类的设计就是类中成员的设计,对象具有的功能取决于类的设计

*/

/*

  • java代码世界由各种功能不同的类组成
  • 类中常见的成员:
  • 1,属性Field(翻译为域或字段)=对应类中的成员变量
  • 2,行为(功能)=对应类中成员的方法Method(函数)
  • 创建类的对象 = 类的实例化 = 实例化类
  • 对应现实世界人类有年龄身高等属性,有跑步说话等功能
  • 类的语法格式
  • 修饰符 class 类名{ //考虑修饰符(是否需要),类名(是否重名,是否关键字,是否清晰形象)
  • 属性声明; //(修饰符,属性类型,属性名,初始化值)
  • 方法声明; //(修饰符,返回值类型,方法名,形参等)
  • }
  • 说明:修饰符public表示可以被任意访问
  • 修饰符private表示只能在类中被访问
  • 类的主体需用{}包起来
  • 例子
  • public class Person1{
  • private int age;//声明一个私有变量age
  • public void showAge(int i){//声明方法showAge()
  •  age = i;
    
  • }
  • }

*/

/*

  • 类和对象的使用(面向对象的实现方式)
  • 1,创建类,设计类的成员
  • 2,创建类的对象
  • 3,通过“对象.属性”或“对象.方法”调用对象的相关功能
  • 注意:如果创建了一个类的多个对象,那么每一个对象都有独立的一套类的属性(非static情况下)
  • 在内存中有独立的空间,属性的初始化值与一维数组的初始化值一样
  • 如果修改一个对象的属性不影响另外一个对象的属性的值
    */

/*

  • 对象的创建和使用:内存解析
  • 1堆(Heap),此内存区域的唯一目的就是存放对象实例,几乎所有的的对象实例都在这里分配内存,
  • 在java虚拟机中的描述是:所有的对象实例及数组都要在堆上分配
  • 2,通常所说的栈(stack),是指虚拟机栈,虚拟机栈用于储存局部变量等,局部变量表存放
  • 了编译器可知长度的各种基本数据类型(boolean,byte,char,short,long,float,double),
  • 对象引用(reference类型,它不等同与对象本身,而是对象在堆内的首存地址)。方法执行完后,自动释放
  • 3,方法区(Method Area),用于储存已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据

*/

package com.atguigu.contact;

public class Object1 {
	public static void main(String[] args) {//测试类中创建main方法作为入口
		Person people = new Person();//实例化Person类
		//调用属性格式 :对象.属性
		people.name = "john";
		people.age = 18;
		people.isMarried = false;
		people.gender = '男';//调用属性赋值
		//调用方法格式 :对象.方法
		people.eat();
		people.talk();
		people.sleep();
		people.work();
		System.out.println(people.display(1));//调用方法输出
		Person1 people1 = new Person1();
		//调用构造器格式 :对象.构造器(参数)
		people1.Person("Tom",30, false);//调用构造器赋值
		System.out.println(people1.display(2));//赋值后调用方法输出
	    //新创建一个对象,看属性的初始化值
		Person people2 = new Person();//方法内,局部变量
		System.out.println(people2.name);//null
		System.out.println(people2.age);//0
		System.out.println(people2.gender);//空值
		System.out.println(people2.isMarried);//false
		//
		Person people3 = new Person();
		people3 = people;
		people3.age = 10;
		System.out.println(people3.name);//输出john
		System.out.println(people.age);//输出10,与数组类似,直接赋值与复制不同
		//相当于将people 的地址赋值给people3,指向的是同一个内存空间。

				
}
}

class Person{
	String name;
	int age;
	char gender;
	boolean isMarried;//属性声明部分,成员变量
	public void eat() {//没有返回值需加 void
		System.out.println(name + "吃了一顿饭");
	}
	public void talk() {
		System.out.println(name + "唠了一会嗑");
	}
	public void sleep() {
		System.out.println(name + "睡了一会觉");
	}
	public void work() {
		System.out.println(name + "干了一会活");
	}
	public String display(int index) {//可以在括号里定义变量,在调用时赋值使用,形参,局部变量		
		return (index + "号人物名字是:" + name + "  年龄是:" + age + "  性别是:" + gender + "  是否已婚:" + isMarried);
	}//方法声明部分
}

class Person1{
	//属性
	String name;
	boolean isMarried;
	int age;
	//构造器
	public void Person() {}
	public void Person(String n,int num,boolean mark) {//形参,局部变量
		name = n;
		isMarried = mark;
		age = num;//构造器内部变量,局部变量
	
	}
	//方法
	public void walk () {
		System.out.println(name + "向前走了一段路");
	}
	public String display(int index) {
		return index + "号人物名字是:" + name  + "  年龄是:" + age + "  是否结婚" + isMarried;
	}
	//代码块
	{
		name = "hank";
		isMarried = true;
		age = 20;//代码块内,局部变量
	}
	//内部类
	class pet{
		String name;
		float weight;
	} 	
}
发布了47 篇原创文章 · 获赞 1 · 访问量 1082

猜你喜欢

转载自blog.csdn.net/wisdomcodeinside/article/details/103978890