Java04

小芳大大_5605

小芳大大_5605

2016-10-10

2506人浏览

原创

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 && day <p>9.变量、方法的分类:</p><p> </p><p>    内存的分配:栈内存  堆内存</p><p>    创建对象时,通过new关键字调用构造函数,返回当前类的对象:People p=new People();</p><p>    对象里有成员变量,会在堆内存中开辟连续的空间存储成员变量。</p><p>    p是People类型的引用,p存储在栈内存中,它指向堆内存中的对象</p><p> </p><p>    这种引用就是C语言中的指针,只是Java语言把这个指针封装了起来</p><p> </p><p>    变量:成员变量   局部变量</p><p>        成员变量:类变量(有static关键字修饰) 和 实例变量(没有static关键字修饰)</p><p>        局部变量:形参、方法内的变量、代码块的变量</p><p> </p><p>    方法:类方法(有static关键字修饰)、实例方法(没有static关键字修饰)</p><p> </p><p>    java中类的生命周期:加载(Loading)-->验证(Verification)-->准备(Preparation)-->解析(Resolution)--></p><p>                初始化(Initialization)-->使用(Using)-->卸载(Unloadling)</p><p> </p><p>    1、类变量和实例变量的区别:类变量共享 ,类变量在类加载时分配入内存;实例变量每个对象独有 ,实例变量在类初始化的时候分配内存。</p><p>    2、类方法和实例方法的区别:类方法在类加载时分配入口地址;实例方法在类初始化时分配入口地址 (创建第一个对象时)</p><p> </p><p>    3、访问和调用规则:</p><p>        1、实例方法既能能访问实例变量又能访问类变量</p><p>        2、类方法只能访问类变量</p><p>        3、实例方法能调用类方法,但是类方法只能调用类方法</p><p> </p><p>10.对象默认初始化</p><p> </p><p>11.总结</p><p>    1.类的概念、对象的概念;通过群体和个体的概念理解类和对象的关系</p><p>    2.类的成员包括—— 属性、方法 (有啥,能干啥)</p><p>    3.方法的设计</p><p>        a.方法名首字母小写;望文生义;多个单词组成的方法名首字母小写,第二个单词开始首字母大写</p><p>        b.返回类型</p><p>        c.方法的重载(参数的不同,要么参数个数不同,要么参数类型不同)</p><p>    4.成员变量和局部变量的区别;this关键字的作用(this相当于对象自身的意思)</p><p>    5.关于构造方法</p><p>        a.每一个类都有构造方法,不写不代表没有(默认无参的构造方法)</p><p>        b.构造函数与new关键字息息相关,直接决定了对象的构成方式</p><p>        c.带参数构造方法的常用方式(给成员变量进行赋值)</p><p>    6.实例变量和类变量、实例方法和类方法;关键字static</p><p>13.作业</p><p>    1.比较大小:写一个有两个int型的参数的方法,要求方法能够比较这两个参数的大小,并且返回比较大的一个,在另外一个类里使用这个方法。</p><p> </p><p>    2.判断 :在一个类里有一个方法,能判断给定的参数是否为偶数,如果是偶数返回true,否则返回false。在另一个类里调用该方法。</p><p> </p><p>    3.写一个方法,有三个参数,分别为三个线段的长度,判断三条线段是否能组成一个三角形,如果能返回true,否则返回false。在另一个类中使用</p><p> </p><p>    4.写一个三个参数的方法,判断给定的三个参数能否构成直角三角形。另一个类里使用。</p><p><br></p>

Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

2026.10.28

40

16

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

2026.10.28

20

15

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

2026.10.28

40

10

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

120

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

80

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

80

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

40

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

80

25

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

2026.10.22

40

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习