认识类与对象

面向对象的基本概念

1.面向对象
Java语言是一种面向对象的语言。要使用Java进行面向对象的编程,首先要建立面向对象的思想。面向对象是一种直观而且程序结构简单的程序设计方法,它比较符合人类认识现实世界的思维方式。其基本思想是把问题看成是由若干个对象组成,这些对象之间是独立的,但又可以相互配合、连接和协调,从而共同完成整个程序要实现的任务和功能。
面向对象的三大特征:封装、继承和多态。
在这里插入图片描述
面向对象:OOA(Object-Oriented Analysis,面向对象分析方法)
OOD(Object-Oriented Design,面向对象设方法)
OOP(Object Oriented Programming,面向对象程序设计)
2.对象
对象是用来描述客观事物的一个实体。用面向对象方法解决问题时,要对现实世界中的对象进行分析与归纳,找出哪些对象与要解决的问题时相关的。例如奥迪跑车、宝马跑车、奔驰轿车、保时捷跑车,虽然这几个跑车都是对象。但是他们之间具有不同的特征。具体来讲就是品牌不同、价格不同、性能不同等。
3.类
刚才的几个跑车对象之间具有一些共同的特征,如都有轮子、门等;还有一些共同的行为,即都能发动、都能加速、都能制动等,把这些共同的特征和共同的行为组织到一个单元中,就得到了类。
类是具有相同属性和方法的一组对象的集合。类定义了对象将会拥有的特征(属性)和行为(方法)。
类与对象的关系就如同模具和用这个模具制作出的物品之间的关系。一个类给出它的全部对象的一个统一的定义,而它的每个对象则是符合这种定义的一个实体。因此类和对象的关系就是抽象和具体的关系。类是多个对象进行综合抽象的结果,是实体对象的概念模型,而一个对象就是一个类的实例。

定义类

面向对象设计的过程就是抽象的过程,一般分3步来完成。
(1)发现类,类定义了对象将会拥有的特征(属性)和行为(方法)。
(2)发现类的属性,对象所拥有的静态特征在类中表示时称为类的属性。
(3)发现类的方法,对象执行的操作称为类的方法。
1.定义类
定义类的语法格式如下。

[访问修饰符]class 类名{
//省略类的内部代码
}

访问修饰符如public、private等是可选的。
class是声明类的关键字。
按照命名规范,类名首字母大写。
例:定义一个“人”类。

public class Person{
	//省略类的内部代码
}

2.属性
Java中类的内部主要包含属性和方法。对象所拥有的特征在类中表示时称为类的属性。

[访问修饰符]数据类型 属性名;

访问修饰符是可选的。
除了访问修饰符之外,其他的语法和声明变量类似。
例:创建“人”类,并为“人”类添加相应属性。
人都有姓名、性别和年龄。

public class Person{
	public String name;
	public String gender;
	public int age;
}

3.方法
对象执行操作的行为称为类的方法。例如,人有工作的行为,因此“工作”就是“人”类的一个方法。

	[访问修饰符]返回类型 方法名称(参数类型 参数名1{
	//省略方法代码
}

访问修饰符是可选的。
返回类型可以是void,在定义方法时,返回类型为void时表明没有返回值,方法体中不必使用“return”关键字返回具体数据,但是可以使用“return”关键字退出方法。
返回类型如果不是“void”,那么在方法中一定要使用“return”关键字返回对应的类型结果,否则程序会出现编译错误。
小括号中的“参数类型 参数名1”称为参数列表。
当需要在方法执行的时候为方法传递参数时才需要参数列表,如果不需要传递参数就可以省略,不过小括号不可以省略,传递多个参数时,以半角的都好进行分隔。
例:请在“人”类中定义方法,面熟人工作的行为。

public class Person{
	public String name;
	public String gender;
	public int age;
	//工作行为
	public void work(){
		System.out.println(this.name+"的工作理念:多劳多得");
	}
}

创建和使用对象

1.创建对象
类是一类事物的集合和抽象,代表这类事物共有的属性和行为。一个对象称为类的一个实例,是类一次实例化的结果。例如,“张三”是一个“人”类的具体对象。
类的对象可以调用类中的成员,如属性和方法等。
在这里插入图片描述

类名 对象名=new 类名();

new是关键字。
左边的类名为对象的数据类型。
右边的类名()称为类的构造方法。
例:创建Person类的对象。

Person hanbing=new Person();

该例表示创建了Person类的一个对象,对象名是hanbing。Person是一个“人”类,而hanbing只是Person类的一个对象实例。
2.使用对象
在Java中,要引用对象的属性和方法,需要使用“.”。

对象名.属性 //引用对象的属性
对象名.方法名()//引用对象的方法

例:为上例的对象属性赋值并调用其方法。

public static void main(String args[]){
	Person hanbing=new Person();//创建对象
	hanbing.name="寒冰";//为对象的name属性赋值
	hanbing.gender="女";//为对象的gender属性赋值
	hanbing.age="30";//为对象的age属性赋值
	hanbing.work();//调用对象的work方法
}

面向对象的优点有如下几点:
(1)与人类的思维习惯一致:面向对象的思维方式是从人类考虑问题的角度出发,把人类解决问题的思维过程转变为程序能够理解的过程。面向对象程序设计使用“类”来模拟现实世界中的抽象概念,用“对象”来模拟现实世界中的实体,从而用计算机解决现实问题。
(2)信息隐藏,提高了程序的可维护性和安全性:封装实现了模块化和信息隐藏,即将类的属性和行为封装在类中,这保证了对它们的修改不会影响到其他对象,利于维护。同时,封装使得在对象外部不能随意访问对象的属性和方法,避免了外部错误对它的影响,提高了安全性。
(3)提高了程序的可重要性:一个类可以创建多个对象实例,体现了重要性。
例1:编写学员类,输出学员相关信息;编写教员类,输出教员相关信息。

package kb09;

/**
 * @Author Tangzhihao
 * @Date 2020/7/17
 * @Description 学校类
 * 属性:校名、地址、课程
 * 方法:宣传、授课
 */
public class School {
    String schoolName;
    String address;
    String subject;
    public void advertisement(){
        System.out.println("本校:"+schoolName+",地址为"+address+"授课有:"+subject);
    }
    public void teach(){
        System.out.println("你还是太年轻了");
    }
   /* void testUseOther(){
        Student s=new Student();
    }*/
}
package kb09;

/**
 * @Author Tangzhihao
 * @Date 2020/7/17
 * @Description
 */
public class TestSchool {
    public static void main(String[] args) {
        School kgc = new School();
        kgc.schoolName = "课工场";
        kgc.address = "小行路";
        kgc.subject = "大数据";
        kgc.teach();
        kgc.advertisement();
        System.out.println(kgc.schoolName);
    }
}

例2:一个景区根据游人的年龄收取不同价格的门票。请编写游人类,根据年龄段决定能够购买的门票价格并输出。

package kb09.ticket;

/**
 * @Author Tangzhihao
 * @Date 2020/7/17
 * @Description 一个景区根据游人的年龄收取不同价格的门票。
 * 请编写
 * 属性:姓名、年龄
 */
public class Traveller {
    String name;
    int age;
}
package kb09.ticket;

//import sun.reflect.generics.visitor.Visitor;

/**
 * @Author Tangzhihao
 * @Date 2020/7/17
 * @Description
 */
public class Park {
    Traveller visitor;//游人属性
    final int price = 100;//定死 final最终

    void sellTicket() {
        int age = visitor.age;
        //60岁以上免票,22岁以下半票,其余全票
        if (age > 60) {
            System.out.println("老人" + visitor.name + "只需" + 0 * price + "元。");
        } else if (age < 22) {
            System.out.println("你" + visitor.name + "要出" + price / 2 + "元。");
        } else {
            System.out.println(visitor.name + "需全票" + price + "元");
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值