0.面向对象(Object Oriented:OO):
0、OOA(面向对象分析) OOD(面向对象的设计) OOP(面向对象编程)
1、是软件开发方法
2、扩展的领域:数据库系统、交互式界面、应用平台、分布式系统、人工智能等领域
3、是一种对现实世界的理解和抽象的方法,是计算机编程技术发展到一定阶段的产物
1.类和对象的基本概念
1.类:类是对具有相似性质的一类事物的抽象,类封装了相似性质事物的属性(特征)和方法(行为) (即类的成员)
2.对象:对象是一类事物中具体的个体
3.类——对象 关系参考 种群——个体
4.类的构成:零个或多个成员变量 零个或多个方法 零个或多个构造器
成员变量:定义该类或该类的实例所包含的状态数据
方法:用来定义该类或该类的实例的行为特征或者功能实现
构造器:用于构造该类的实例(关于构造器后面会着重讲解)
5.对象的产生和使用:
创建创建出来后就可以使用了,Java的对象大致有如下作用:访问对象的实例变量和调用对象的方法
创建对象的根本途径是构造器,通过new关键字来调用某个类的构造器即可以创建这个类的实例(对象)
对象名.实例变量|方法
类名.类变量|方法
6.一般实体类例子 Dog.java ; 对象的声明和创建; 程序入口类(主类),带有main方法的类
7.一个人(张三)在街上散步,遇到一条狗(大黄),狗(大黄)咬了人(张三),人(张三)打了狗(大黄),狗(大黄)跑了~!
package Chapter7_2; //Dog类的申明 public class Dog { String name; public void beatPersion(People p){ System.out.println(name+"咬了"+p.name); } public void dogRun(){ System.out.println(name+"跑了......"); } } package Chapter7_2; //People类的申明 public class People { String name; public void walk(){ System.out.println(name+"街上散步"); } public void meetDog(Dog dog){ System.out.println(name+"遇到"+dog.name); } public void beatDog(Dog dog){ System.out.println(name+"打了"+dog.name); } } package Chapter7_2; //主类 public class DogAndPeople { public static void main(String[] args) { People peo=new People(); Dog dog =new Dog(); peo.name="张三"; dog.name="大黄"; peo.walk(); peo.meetDog(dog); dog.beatPersion(peo); peo.beatDog(dog); dog.dogRun(); } }
2.练习: Car类,描述汽车的属性(品牌mark、排量power、颜色color、价格price)
和方法(启动start、加速speedup、正常行驶run,碰到hit(人))
写一个People类,有属性(姓名name、性别sex、年龄age)、
方法(驾驶drive(car),以Car类对象为参数),
在主类中
1)让一个人张三驾驶一辆宝马车在街上飞奔
2)碰到了一个叫做李四的人
package Chapter7_3; //定义Car类 public class Car { String mark; int power; String color; int price; public void start(People p) { System.out.println(p.name + "启动了"+mark); } public void speedUp(){ System.out.println(mark+"加速"); } public void run(){ System.out.println(mark+"正常行驶"); } public void hit(People p){ System.out.println(mark+"撞了"+p.name); } } package Chapter7_3; //People类申明 public class People { String name ; char sex; short age; public void dirve(Car car){ System.out.println(name+"驾驶"+car.mark); } } package Chapter7_3; //主类 public class CarAndPerple { public static void main(String[] args) { Car car=new Car(); People p1=new People(); People p2=new People(); car.color="black"; car.mark="宝马"; car.power=123; car.price=123143; p1.age=20; p1.name="张三"; p1.sex='m'; p2.age=21; p2.name="李四"; p2.sex='m'; car.start(p1); car.speedUp(); p1.dirve(car); car.run(); car.hit(p2); } }
3.类和对象的使用总结
1.抽象出具有相似特征(属性)和行为(方法)的一类事物封装到类里
2.根据业务需要实例化(new)出具体的对象
3.对对象进行初始化赋值,以便得到具体对象的特征
4.根据业务需要组合对象之间的行为(方法)
4.成员变量和局部变量
1.成员变量定义在类中,方法的外面;又叫全局变量,有效作用域是整个类体
2.局部变量定义在方法里面,作用域是方法内部
3.当局部变量和成员变量名字相同的时候,成员变量在该局部变量所在的方法中被隐藏。如果需要在这个方法里使用被隐藏的全局(成员)变量,需要使用this关键字
this:如果局部变量和成员变量同名,可以在局部变量所在的代码块里调用成员变量
5.关于方法的设计
1.方法的所属性
2.方法的组成 :访问修饰符 返回值 方法名 方法参数列表
3.重载:方法重载是指一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。
练习:简易计算器(能实现两个、三个、四个数的加)
6.构造方法(构造器)
1.什么是构造方法?有何特点?
2.构造方法的作用?
3.构造方法何时被调用?
例子:7
练习:8
4.构造方法可以重载吗?
5.其他说明:
构造器是创建对象的重要途径,一个类中至少要包含一个构造器
程序员如果不给一个类加构造器,则系统会默认添加一个没有参数的构造器
7.示例:建立一个学生类,有学号、姓名、年龄、性别属性,有描述个人信息的方法,通过键盘输入获取两个学生的信息,并且打印出描述信息
略
8.构建一个员工信息类(Employee),有员工编号、员工姓名、性别、年龄、工龄、工资等属性,有工作和休息的方法,还有打印自身信息的方法;
在入口类中通过键盘输入,获取两个员工的对象,要求通过带参数的构造方法来进行成员变量的初始化。然后根据输入星期几,来输出员工当前的状态(周一至周五工作、周六和周日休息)
package Chapter8_2; //所有类与方法在同一个文件中 import java.util.Scanner; public class Staff { int number; String name; char sex; short age; short w_age; long mon; public Staff(String name, int number, char sex, short age, short w_age, long mon) { this.name = name; this.number = number; this.sex = sex; this.age = age; this.w_age = w_age; this.mon = mon; } public void rest() { System.out.println(name + "今天休息"); } public void work() { System.out.println(name + "今天工作"); } public void printSelf() { System.out.println(name + "\t" +number+"\t" +sex + "\t" + age + "\t" + w_age + "\t" + mon + "\t"); } public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请输入第一个员工的信息:姓名,工号,性别,年龄,工龄,工资"); String name = scan.next(); int number = scan.nextInt(); char sex = scan.next().charAt(0); short age = scan.nextShort(); short w_age = scan.nextShort(); long mon = scan.nextLong(); Staff sta = new Staff(name, number, sex, age, w_age, mon); System.out.println("今天星期几"); short day = scan.nextShort(); if (day < 6) { sta.work(); } else if (day >= 6 && day <= 7) { sta.rest(); } else { System.out.println("error!"); } System.out.println("员工信息如下"); System.out.println("姓名"+"\t"+"工号"+"\t"+"性别"+"\t"+"年龄"+"\t"+"工龄"+"\t"+"工资"); sta.printSelf(); } }
9.变量、方法的分类:
内存的分配:栈内存 堆内存
创建对象时,通过new关键字调用构造函数,返回当前类的对象:People p=new People();
对象里有成员变量,会在堆内存中开辟连续的空间存储成员变量。
p是People类型的引用,p存储在栈内存中,它指向堆内存中的对象
这种引用就是C语言中的指针,只是Java语言把这个指针封装了起来
变量:成员变量 局部变量
成员变量:类变量(有static关键字修饰) 和 实例变量(没有static关键字修饰)
局部变量:形参、方法内的变量、代码块的变量
方法:类方法(有static关键字修饰)、实例方法(没有static关键字修饰)
java中类的生命周期:加载(Loading)-->验证(Verification)-->准备(Preparation)-->解析(Resolution)-->
初始化(Initialization)-->使用(Using)-->卸载(Unloadling)
1、类变量和实例变量的区别:类变量共享 ,类变量在类加载时分配入内存;实例变量每个对象独有 ,实例变量在类初始化的时候分配内存。
2、类方法和实例方法的区别:类方法在类加载时分配入口地址;实例方法在类初始化时分配入口地址 (创建第一个对象时)
3、访问和调用规则:
1、实例方法既能能访问实例变量又能访问类变量
2、类方法只能访问类变量
3、实例方法能调用类方法,但是类方法只能调用类方法
10.对象默认初始化
11.总结
1.类的概念、对象的概念;通过群体和个体的概念理解类和对象的关系
2.类的成员包括—— 属性、方法 (有啥,能干啥)
3.方法的设计
a.方法名首字母小写;望文生义;多个单词组成的方法名首字母小写,第二个单词开始首字母大写
b.返回类型
c.方法的重载(参数的不同,要么参数个数不同,要么参数类型不同)
4.成员变量和局部变量的区别;this关键字的作用(this相当于对象自身的意思)
5.关于构造方法
a.每一个类都有构造方法,不写不代表没有(默认无参的构造方法)
b.构造函数与new关键字息息相关,直接决定了对象的构成方式
c.带参数构造方法的常用方式(给成员变量进行赋值)
6.实例变量和类变量、实例方法和类方法;关键字static
13.作业
1.比较大小:写一个有两个int型的参数的方法,要求方法能够比较这两个参数的大小,并且返回比较大的一个,在另外一个类里使用这个方法。
2.判断 :在一个类里有一个方法,能判断给定的参数是否为偶数,如果是偶数返回true,否则返回false。在另一个类里调用该方法。
3.写一个方法,有三个参数,分别为三个线段的长度,判断三条线段是否能组成一个三角形,如果能返回true,否则返回false。在另一个类中使用
4.写一个三个参数的方法,判断给定的三个参数能否构成直角三角形。另一个类里使用。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

Atom编辑器mac版下载
最流行的的开源编辑器

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 Linux新版
SublimeText3 Linux最新版

SublimeText3汉化版
中文版,非常好用