认识类与对象

内容主体大纲:
创建类与对象
掌握面向对象的三大特性:
--------封装
--------继承
--------多态
掌握抽象类和接口的使用
掌握程序中的异常处理
会使用面向对象思想进行编程

开发方法

结构化开发
-------面向功能划分软件结构
-------自顶而下
-------最小的子系统是方法
-------制约了软件的可维护性和可扩展性
面向对象开发
------把软件系统看成各种对象的集合
------系统结构较稳定
(面向对象程序设计Object Oriented Programming,称为OOP)
-----子系统相对独立
-----软件可重用性、可维护性和可扩展性强

万物皆对象

世界是由什么组成的呢??
各种各样的客观存在的事物(包括动物,植物,物品,风景名胜等等)
ps:分类是人们认识世界的一个很自然的过程,在日常生活中会不自觉地进行分类

我们身边的“对象”:
例:在超市遇到的购物者,就可以称为一个对象
顾客----------------------类名
姓名-狗娃---------------成员变量name
年龄-20------------------成员变量age
体重-60------------------成员变量weight
操作:-------------------成员方法
购买商品----------------buy()

对象的特征–属性

属性--------对象具有的各种特征
每个对象的每个属性都拥有特定值
----例如每个顾客的名字,年龄之类的属性都不一样,所以说每个对象的每个属性都拥有自己的独特性

对象的特征–方法

方法----对象执行的操作
例:顾客狗娃在购买商品,购买商品就是狗娃这个对象所执行的操作

对象:用来描述客观事物的一个实体,由一组属性和方法构成的
例:狗娃的各种属性加上他自己的方法(也就是行为),才组成了狗娃这个对象,再比如一个玻璃杯,玻璃就是他的构成,就是他的属性,喝水,就是他的方法,属性加上喝水的方法,就组成了玻璃杯这个对象。

类和对象

对象在之前已经解释过了,类又是什么呢
类:具有相同属性和方法的一组对象的集合。类是对象的抽象,对象时类的具体

类和对象的关系
------类是抽象的概念,仅仅是模板
例:学生,就是一个类,并不单单指某个学生,而是所有学生的集合
-----对象是一个你能够看得到、摸得着的具体实体
还是举学生的例子,比如我的小侄子,他所拥有的属性都很具体,身高体重什么的都有具体的数据,也有自己的行为方法,他很具体,所以他是一个对象,而不是一个模板,学生这个类就没有具体的数据,他没有具体的身高体重,仅仅是个模板

Java是面向对象的语言

所有Java程序都以类class为组织单元
关键字class定义自定义的数据类型

class Student {
	String name;
	int age;
	String class1;
	String hobby;
	public Student() {

	}

	public Student(String name, int age,String class1,String hobby) {
		this.name = name;
		this.age = age;
		this.class1 = class1;
		this.hobby = hobby;
	}

	public void print() {
		System.out.println(name);
		System.out.println("年龄:" + age);
		System.out.println("就读于:" + class1);
		System.out.println("爱好:" + hobby);
	}
}

这里的class Student就是一个类名

Java类模板

类将现实世界中的概念模拟到计算机程序中,这里说下组成:

public class  类名 {
        //定义属性部分
        属性1的类型 属性1;
 	     …
        属性n的类型 属性n;
        //定义方法部分
        方法1;
        …
        方法m;
}

类名首字母要大写,定义属性的称为成员变量,,定义方法的称为成员方法,在方法中声明的变量被称为局部变量,这里有个知识点,成员变量可以不赋初值,因为虚拟机会给其赋初值,int就是0,String 就是null,局部变量则必须通过我们赋予初值,不然会报错的哦
定义类的步骤:
(1)定义类名
(2)编写类的属性
(3)编写类的方法

类图

使用类图描述类
----用于分析和设计“类”
----直观、容易理解在这里插入图片描述
Dog:类名
name:属性名 String:类型
+:public -:private
print():方法名,小括号里是参数:名字:类型,名字:类型(这是写法)
void:是返回值类型(void是无返回值)

如何创建和使用对象

使用对象的步骤
----创建对象
-----------类名 对象名 = new 类名();
School center = new School();
-----------引用对象成员,使用.进行以下操作
----------------引用类的属性:对象名.属性
center.name= "牛逼";
----------------引用类的方法:对象名.方法名()
center.showCenter();
这样就可以调用类中的方法了,也可以对其成员变量赋值了。

练习一

创建学员类和教员类

class Student {
	String name;
	int age;
	String class1;
	String hobby;
	public Student() {

	}

	public Student(String name, int age,String class1,String hobby) {
		this.name = name;
		this.age = age;
		this.class1 = class1;
		this.hobby = hobby;
	}

	public void print() {
		System.out.println(name);
		System.out.println("年龄:" + age);
		System.out.println("就读于:" + class1);
		System.out.println("爱好:" + hobby);
	}
}
class Teacher {

	String specialty;
	String course;
	String age1;

	public Teacher(){
		
	}
	public Teacher(String name,String specialty,String course,String age1){
		this.name = name;
		this.specialty = specialty;
		this.course = course;
		this.age1 = age1;
	}
	public void print(){
		System.out.println(name);
		System.out.println("专业方向:" + specialty);
		System.out.println("教授课程:" + course);
		System.out.println("教龄:" + age1);
	}
}

public class Demo1 {
	public static void main(String[] args) {
		/*
		 * School s = new School("北大青鸟","江苏徐州"); s.print();
		 */
		School s = new School();
		s.name = "北大青鸟";
		s.address = "江苏徐州";
		s.print();
		Student stu = new Student("张浩",26,"KG班","篮球、美术");
		stu.print();
		Teacher t = new Teacher("王老师","计算机","使用java语言理解程序逻辑","5");
		t.print();
	}
}

类的方法

通过前面案例,请思考:方法是什么?
-------方法是个“黑匣子”,完成某个特定的应用程序功能,并返回结果
-------类的方法定义类的某种行为(或功能)
如何定义一个方法?

public void show(){
       System.out.println("姓名:" + name + ",密码:" + password);
}

要注意:(1)驼峰命名法(2)有意义(见名知意)

方法返回值
两种情况
----如果方法具有返回值,方法中必须使用关键字return返回该值,返回值类型为该值的类型
----返回值只能有一个

public class Student{
         String name = "张三";
         public String  getName(){
                  return name;
          }
  }

----如果方法没有返回值,返回值类型为void

方法调用
----方法之间允许相互调用,不需要知道方法的具体实现,实现重用,提高效率
在这里插入图片描述
方法调用应用

一个景区根据游人的年龄收取不同价格的门票。请编写游人类,根据年龄段决定能够购买的门票价格并输出
票价是20元
12岁以下免票
60岁以上半价
其他人全价

import java.util.Scanner;

class Tourist{
	String name;
	int age;
	public void print(String name,int age){
		if(age<12){
			System.out.println(name+"的年龄为:"+age+",门票免费");
		}else if(age>60){
			System.out.println(name+"的年龄为:"+age+",门票价格为:10");
		}else{
			System.out.println(name+"的年龄为:"+age+",门票价格为:20");
		}
		System.out.println();
	}
}
public class Demo2 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		Tourist t = new Tourist();
		while(true){
			System.out.print("请输入姓名:");
			String name = input.next();
			if(name.equals("n")){
				System.out.println("退出程序");
				break;
			}
			System.out.print("请输入年龄:");
			int age = input.nextInt();
			t.print(name,age);
			
		}
	}
}

练习2:用户密码管理

模拟实现用户密码管理:输入旧的用户名和密码,如果正确,方有权限更新;从键盘获取新的密码,进行更新

import java.util.Scanner;

class User{
	String name = "admin1";
	int num = 111111;
	String name1;
	int num1 ;
	int count;
	public void print(String name1,int num1){//一个比较的功能
		if(name1.equals(name)&num1==num){
			count =1;
			System.out.println();
		}else{
			
			System.out.println("用户名和密码不匹配!您没有权限更新管理员信息");
		}
	}
}

public class Demo3 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		User u = new User();
		System.out.print("请输入用户名:");
		String nameUser = input.next();
		System.out.print("请输入密码:");
		int num = input.nextInt();
		u.print(nameUser, num);
		if(u.count==1){
			System.out.print("请输入新密码:");
			num = input.nextInt();
			u.num = num;
			System.out.println("修改密码成功,您的新密码为:"+num);
		}
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值